//非此即彼的思想,参考庄神ppt,YM庄神,自己太弱了。。。
#include <stdio.h>
int father[2001];
int gender[2001];
int Find_set(int x)
{
if(father[x]!=x)
{
father[x]=Find_set(father[x]);
}
return father[x];
}
void Union(int x,int y)
{
x=Find_set(x); //Union 中再次查找树根,可以降低数的高度
y=Find_set(y);
if(x!=y)
father[x]=y;
}
int main()
{
int cases;
scanf("%d",&cases);
int t=1;
while(cases--)
{
bool find=false;
int bugs,n;
scanf("%d%d",&bugs,&n);
for(int i=1;i<=bugs;++i)
{
father[i]=i;
gender[i]=0; //性别只有两类,均初始化为0
}
for(i=0;i<n;++i)
{
int x,y;
scanf("%d%d",&x,&y);
if(!find)
{
if(Find_set(x)==Find_set(y))
{
find=true;
continue;
}
if(gender[x]==0)
gender[x]=y; //gender[x]用于存储对方的类别
else
Union(gender[x],y); //与x相反的类及与y相同的类,将其合并
if(gender[y]==0)
gender[y]=x;
else
Union(x,gender[y]);
}
}
printf("Scenario #%d:\n",t);
if(find)
printf("Suspicious bugs found!\n");
else
printf("No suspicious bugs found!\n");
t++;
printf("\n");
}
}