您的位置:首页 > 其它

hdu1213 How Many Tables 并查集的简单应用

2013-10-21 11:02 447 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213

简单的并查集

代码:

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define maxn 1100
using namespace std;

int parent[maxn];
int m,n;
int Find(int x)
{
int s;
for(s=x;parent[s]>=0;s=parent[s]);
return s;
}
void Union(int r1,int r2)
{
int R1=Find(r1);
int R2=Find(r2);
if(R1!=R2) parent[R1]=R2;
return ;
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d",&n,&m);
int A,B;
for(int i=1;i<=n;i++) parent[i]=-1;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&A,&B);
Union(A,B);
}
int ans=0;
for(int i=1;i<=n;i++)
if(parent[i]==-1) ans++;
cout<<ans<<endl;
}
return 0;

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