poj 2492 A Bug's Life

// 题意:有种虫只有两种性别,它们只和不同性别的虫配对,给出n对异性虫,判断是否冲突

#include <iostream> //并查集
using namespace std;
int p[2002],diff[2002],n,m; //diff[i]=j表示编号为j跟编号为i的人不在同一组
void init()
{
for(int i=1;i<=n;++i)
{
p[i]=i;
diff[i]=-1;
}
}
int find(int x)
{
return p[x]==x ? x : p[x]=find(p[x]);
}
void Union(int a,int b)
{
int x=find(a),y=find(b);
if(x!=y)
p[x]=y;
}
int main()
{
int cases;
cin>>cases;
for(int k=1;k<=cases;++k)
{
cin>>n>>m;
init();
int suc=1,a,b;
while(m--)
{
scanf("%d%d",&a,&b);
if(!suc)
continue;
int fa=find(a),fb=find(b);
if(fa==fb)
{
suc=0;
}
else
{
if(diff[a]!=-1)
Union(b,diff[a]);
if(diff[b]!=-1)
Union(a,diff[b]);
diff[a]=b;diff[b]=a;
}
}
printf("Scenario #%d:\n",k);
if(suc)
printf("No suspicious bugs found!\n\n");
else
printf("Suspicious bugs found!\n\n");
}
return 0;
}

posted on 2011-07-22 15:04  sysu_mjc  阅读(140)  评论(0编辑  收藏  举报

导航