//非此即彼的思想,參考莊神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");
}
}