這個題目頗有意思啊,有一些bug生物(確定是程序員養的),有人觀察他們的生活習慣,觀察他們之間是否有同性戀關係,好比ab發生關係,bc發生關係,ab發生關係。。。產生了同性戀了,你須要判斷一下這種關係是否是存在。
#include<algorithm>
using
namespace std;
const
int maxn =
2005;
int f[maxn], relation[maxn];
//
0表示同性,1表示異性
int Find(
int x)
{
int k = f[x];
if(f[x] != x)
{
f[x] = Find(f[x]);
relation[x] = (relation[x]+relation[k])%
2;
}
return f[x];
}
int main()
{
int T, t=
1;
scanf(
"
%d
", &T);
while(T--)
{
int i, N, M, u, v, ru, rv, ok =
0;
scanf(
"
%d%d
", &N, &M);
for(i=
1; i<=N; i++)
f[i] = i, relation[i] =
0;
for(i=
0; i<M; i++)
{
scanf(
"
%d%d
", &u, &v);
if(ok)
continue;
ru = Find(u), rv = Find(v);
if(ru == rv && (relation[v]+
1)%
2 != relation[u])
ok =
1;
else
if(ru != rv)
{
f[ru] = rv;
relation[ru] = (
1-relation[u]+relation[v])%
2;
}
}
if(t !=
1)printf(
"
\n
");
printf(
"
Scenario #%d:\n
", t++);
if(ok)printf(
"
Suspicious bugs found!\n
");
else printf(
"
No suspicious bugs found!\n
");
}
return
0;
}spa