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