标签:
Time Limit: 10000MS | Memory Limit: 65536K | |
Total Submissions: 30184 | Accepted: 9886 |
2
3 3
1 2
2 3
1 3
4 2
1 2
3 4
Scenario #1:
Suspicious bugs found!
Scenario #2:
No suspicious bugs found!
#include <iostream> #include <cstdio> #include <cstring> #define REP(i, s, n) for(int i = s; i <= n; i ++) #define REP_(i, s, n) for(int i = n; i >= s; i --) #define MAX_N 2000 + 10 using namespace std; int n, q, F[MAX_N]; int D[MAX_N]; int find(int x){ if(x == F[x]) return x; return F[x] = find(F[x]); } void Union(int x,int y){ x = find(x), y = find(y); if(x == y) return; F[y] = x; } int main(){ int T; scanf("%d", &T); REP(k, 1, T){ scanf("%d%d", &n, &q); REP(i, 1, n) F[i] = i, D[i] = 0; int x, y; bool ok = 1; while(q --){ scanf("%d%d", &x, &y); if(find(x) != find(y)){ if(!D[x] && !D[y]) D[x] = y, D[y] = x; else if(!D[x]) D[x] = y, Union(x, D[y]); else if(!D[y]) D[y] = x, Union(y, D[x]); else Union(x, D[y]), Union(y, D[x]); } else ok = 0; } printf("Scenario #%d:\n", k); if(!ok) printf("Suspicious bugs found!\n\n"); else printf("No suspicious bugs found!\n\n"); } return 0; }
标签:
原文地址:http://www.cnblogs.com/ALXPCUN/p/4552924.html