#include <stdio.h>
#include <string.h>
#define MAXN 2002
int father[MAXN],sex[MAXN];
int find(int x)
{//带路径压缩的查找算法
int i,r=x;
while(r!=father[r])//循环结束,则找到根节点
r=father[r];
i=x;
while(i!=r)//本循环修改查找路径中所有节点
{
int j=father[i];
father[i]=r;
i=j;
}
return r;
}
void Union(int x,int y)
{
int fx=find(x);
int fy=find(y);
if (fx!=fy)
{
father[fx]=fy;
}
}
int main()
{
int t,n,m,x,y,i,cnt=1;
scanf("%d",&t);
while(t--)
{
int flag=0;
printf("Scenario #%d:\n",cnt++);
scanf("%d %d",&n,&m);
memset(sex,0,sizeof(sex));
for (i=1;i<=n;i++)
{
father[i]=i;
}
for (i=1;i<=m;i++)
{
scanf("%d %d",&x,&y);
if(flag)
continue;
if(find(x)==find(y))
{
flag=1;
continue;
}
else
{
if(sex[x]==0)
sex[x]=y;
else
Union(sex[x],y);
if(sex[y]==0)
sex[y]=x;
else
Union(sex[y],x);
}
}//for
if(flag)
printf("Suspicious bugs found!\n\n");
else
printf("No suspicious bugs found!\n\n");
}
return 0;
}
hdu1829 A Bug's Life
最新推荐文章于 2016-08-27 23:07:26 发布