您的位置:首页 > 其它

【谁说虫子没有爱情? 虫子世界中的爱情之同性相吸】 poj 2492

2013-01-23 15:58 387 查看
一个科学家准备了一些虫子,把两个能够在一起的虫子放在一起,有异性恋,当然,还有同性恋。

问你,这些虫子中是否有同性恋。

这个用并查集的方法,只是在判断的时候稍麻烦一些...

#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

int father[2005];
int a[2005];

int find(int tar)
{
int result=tar;
while(result!=father[result])
{
result=father[result];
}
return result;
}

void Union(int a,int b)
{
int rx=find(a);
int ry=find(b);
if(rx!=ry)
father[rx]=ry;

}

int main()
{
int nn,cc=0;
//cin>>n;
scanf("%d",&nn);
while(nn--)
{
cc++;
int m,n,x,y;
//cin>>m>>n;
scanf("%d%d",&m,&n);
for(int i=1;i<=m;i++)
father[i]=i;

memset(a,-1,sizeof(a));
bool flag=false;
for(int i=0;i<n;i++)
{
//cin>>x>>y;
scanf("%d%d",&x,&y);
if(flag) continue;
if(a[x]==-1)
{
if(a[y]!=-1)
Union(x,a[y]);
a[x]=y;
a[y]=x;
}
else{
if(a[y]==-1)
{
Union(y,a[x]);
a[x]=y;
a[y]=x;
}
else
{
if(find(x)==find(y))
{
flag=true;
continue;
}
else
{
Union(x,a[y]);
Union(y,a[x]);
}
}
}

}

if(flag)
cout<<"Scenario #"<<cc<<":"<<endl
<<"Suspicious bugs found!"<<endl;
else
cout<<"Scenario #"<<cc<<":"<<endl
<<"No suspicious bugs found!"<<endl;

cout<<endl;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: