POJ2492---A Bug's Life(做完食物鏈,再秒這個)
阿新 • • 發佈:2019-01-27
和食物鏈那個是一種型別的,直接程式碼。
#include<iostream>
#include<algorithm>
#include<cstdio>
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");
}