poj 2492 A Bug's Life (并查集)
http://poj.org/problem?id=2492
Hint
Huge input,scanf is recommended.
也是带种类的冰茶几。
由于只分了两类...我们还是可以按照上道题的做法。。
感觉完全是一样的题啊。。
结果一直WA。。。。
最后发现。。。我边读入边判断。。发现同性恋了就直接Break掉了。。。后面改组的数据读到下一组去了233,不WA就日了汪了。。。
还是把数据的读完再进行操作比较好==
1
2
3
4 /* ***********************************************
5 Author :111qqz
6 Created Time :2016年03月03日 星期四 13时37分36秒
7 File Name :code/poj/2492.cpp
8 ************************************************ */
9
10 #include <iostream>
11 #include <algorithm>
12 #include <cstring>
13 #include <cstdio>
14 #include <cmath>
15
16 using namespace std;
17
18 const int N=2E5+7;
19 bool flag;
20 int f[N];
21 int T,n,m,x,y;
22 char ch;
23
24 int root (int x)
25 {
26 if (f[x]!=x)
27 f[x] = root(f[x]);
28 return f[x];
29 }
30 void u(int a,int b)
31 {
32 f[root(a)]=root(b);
33 }
34 int main()
35 {
36 scanf("%d",&T);
37 for ( int cas = 1 ; cas <= T ; cas++ )
38 {
39 for ( int i = 1 ; i < N ; i++ )
40 f[i] = i;
41 scanf("%d %d",&n,&m);
42 flag = false;
43 for ( int i = 1 ; i <= m ; i++ )
44 {
45
46 scanf("%d %d",&x,&y);
47 if (flag)
48 continue;
49
50 if (root(x)==root(y)||root(x+n)==root(y+n))
51 {
52
53 flag = true;
54 }
55 u(x,y+n);
56 u(x+n,y);
57 }
58 if ( !flag )
59 {
60 printf("Scenario #%d:\n",cas);
61 printf("No suspicious bugs found!\n");
62
63 }
64 else
65 {
66 printf("Scenario #%d:\n",cas);
67 printf("Suspicious bugs found!\n");
68
69 }
70 cout<<endl;
71
72 }
73
74 return 0;
75 }
76
77
78
79