本文共 1113 字,大约阅读时间需要 3 分钟。
和食物链那个是一种类型的,直接代码。
#include#include #include using namespace std;int s[4100];int Find(int x){ if (s[x] < 0)return x; else return s[x] = Find(s[x]);//路径压缩}void unite(int x, int y){ int rootx = Find(x); int rooty = Find(y); if(rootx==rooty)return; if (s[rootx] < s[rooty]) { s[rootx] += s[rooty]; s[rooty] = rootx; } else { s[rooty] += s[rootx]; s[rootx] = rooty; }}bool same(int x, int y){ return Find(x) == Find(y);}int main(){ int N; cin >> N; for(int i=1;i<=N;i++) { int flag = 1; int bugs, inter; cin >> bugs >> inter;//就是不改,还不用scanf。 fill(s + 1, s + 1 + 2*bugs, -1); while (inter--) { int x, y; cin >> x >> y; if (same(x, y)) flag = 0; else { unite(x, y + bugs); unite(x + bugs, y); } } printf("Scenario #%d:\n", i); if (!flag) puts("Suspicious bugs found!"); else puts("No suspicious bugs found!"); puts(""); } system("pause");}
转载地址:http://ckyci.baihongyu.com/