在我还有一口气的时候他终于过了........
1
#include<iostream>
2
#define MaxN 50000
3
typedef struct {
4
int parent;
5
int rank;
6
int food;//指向食物类
7
int enemy;//指向天敌类
8
}NODE;
9
NODE animal[MaxN+1];
10
void init(int n)
11
{
12
int i;
13
for(i=1;i<=n;i++){
14
animal[i].parent=i;
15
animal[i].rank=0;
16
animal[i].food=-1;
17
animal[i].enemy=-1;
18
}
19
}
20
int find_set(int x)
21
{
22
if(x==-1)return -1;//有些food,enemy指向-1
23
if(animal[x].parent!=x)
24
animal[x].parent=find_set(animal[x].parent);
25
return animal[x].parent;
26
}
27
int union_set(int x,int y)
28
{
29
if(x==-1)return y;
30
if(y==-1)return x;
31
if(animal[x].rank>animal[y].rank){
32
animal[y].parent=x;
33
return x;}
34
else {
35
animal[x].parent=y;
36
if(animal[x].rank==animal[y].rank)animal[y].rank++;
37
return y;}
38
}
39
void make(int x,int y,int fx,int fy,int ex,int ey)//创建x吃y的关系
40
{
41
int t,v,w;
42
t=union_set(fx,y);//首先将y与x的food合并
43
v=union_set(x,ey);
44
w=union_set(ex,fy);
45
animal[v].enemy=w;
46
animal[v].food=t;
47
animal[t].enemy=v;
48
animal[t].food=w;
49
if(w!=-1){
50
animal[w].food=v;
51
animal[w].enemy=t;}
52
}
53
int main()
54
{
55
int N,K,i,wn=0,x,y,fx,fy,ex,ey,oper;
56
int t,u,v;
57
scanf("%d%d",&N,&K);
58
init(N);
59
for(i=1;i<=K;i++){
60
scanf("%d%d%d",&oper,&x,&y);//oper为1的时候表示x和y是同类,oper为2的时候表示x吃y
61
if(x>N||y>N){wn++;continue;}
62
x=find_set(x);
63
y=find_set(y);
64
fx=find_set(animal[x].food);//fx可能是-1
65
fy=find_set(animal[y].food);//fy也可能是-1
66
ex=find_set(animal[x].enemy);
67
ey=find_set(animal[y].enemy);
68
if(x==y){if(oper==2)wn++;continue;}//1.x,y同类
69
if(fy==x){wn++;continue;}//3.y吃x
70
if(fx==y){if(oper==1)wn++;continue;}//2.x吃y
71
if(oper==2)make(x,y,fx,fy,ex,ey);//4..x和y尚未产生联系,创建联系,首先是x吃y,其次y的food类吃x
72
if(oper==1){//4..x和y尚未产生联系,创建联系
73
t=union_set(x,y);
74
u=union_set(fx,fy);
75
v=union_set(ex,ey);
76
animal[t].food=u;
77
animal[t].enemy=v;
78
if(u!=-1){
79
animal[u].enemy=t;
80
animal[u].food=v;}
81
if(v!=-1){
82
animal[v].food=t;
83
animal[v].enemy=u;}}
84
}
85
printf("%d\n",wn);
86
return 0;
87
}
if(u!=-1)if(v!=-1)这里折腾了我两天
posted on 2008-01-31 20:39
zoyi 阅读(1509)
评论(5) 编辑 收藏 引用 所属分类:
数据结构