Qiuqiqiu  
不管道路多么崎岖坎坷,我永远不停下追逐梦想的脚步!

http://acm.hdu.edu.cn/showproblem.php?pid=1829

并查集

相同性别的为同一集合,异性的异性为同性

我的代码
 1 #include <stdio.h>
2 #include <string.h>
3 const int N=2010;
4 int set[N],dsex[N];
5 int find(int x)
6 {
7 return set[x]==x?x:set[x]=find(set[x]);
8 }
9 int main()
10 {
11 int T,C=0;
12 int n,m,x,y,fx,fy,ans,i;
13 scanf("%d",&T);
14 while (T--)
15 {
16 ans=0;
17 scanf("%d%d",&n,&m);
18 memset(dsex,0,sizeof(dsex));
19 for (i=1;i<=n;i++) set[i]=i;
20 for (i=1;i<=m;i++)
21 {
22 scanf("%d%d",&x,&y);
23 if (ans) continue;
24 fx=find(x); fy=find(y);
25 if (fx==fy) ans=1;
26 if (dsex[x]) set[y]=find(dsex[x]);
27 else dsex[x]=y;
28 if (dsex[y]) set[x]=find(dsex[y]);
29 else dsex[y]=x;
30 }
31 printf("Scenario #%d:\n",++C);
32 if (ans) printf("Suspicious bugs found!\n");
33 else printf("No suspicious bugs found!\n");
34 printf("\n");
35 }
36 return 0;
37 }

 

posted on 2012-01-01 18:50  Qiuqiqiu  阅读(220)  评论(0)    收藏  举报