hdu 1213 How Many Tables

来源:互联网 发布:根据域名查询服务器 编辑:程序博客网 时间:2024/05/22 10:47

本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1213

用并查集,判断根节点的个数即为桌子的个数,AC代码:

#include<stdio.h>int per[1010];void init(){for(int i=1;i<=1000;i++){per[i]=i;}}int find(int x){int r=x;while(r!=per[r])r=per[r];int j,i=x;while(i!=r){j=per[i];i=j;per[i]=r;}return r;}void join(int a,int b){int fa=find(a);int fb=find(b);if(fa!=fb)per[fa]=fb;}int main(){int t;int n,m;int a,b;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);init();for(int j=0;j<m;j++){scanf("%d%d",&a,&b);join(a,b);}int count=0;for(int i=1;i<=n;i++){if(per[i]==i)count++;}printf("%d\n",count);}return 0;}


 

0 0