HDU---1213题How Many Tables

来源:互联网 发布:js 计数器效果 编辑:程序博客网 时间:2024/06/16 01:21

直白的并查集问题,可以当作一个模版储存起来。不说废话了。

题目大意:你需要判断一个有多少元素不在同一个集合中,输出结果。

原题地址:点击打开链接。

代码如下:

#include<stdio.h>#include<string.h>int p[1001];int find(int x){return p[x]==x?x:p[x]=find(p[x]);}bool join(int x,int y){int a=find(x);int b=find(y);if(a==b)return false;else p[b]=a; return true;}int main(){int T,n,m,i,j,a,ans,b;scanf("%d",&T);while(T--){     ans=0;memset(p,0,sizeof(p));scanf("%d%d",&n,&m);     for(i=1;i<=n;i++)  p[i]=i;while(m--){scanf("%d%d",&a,&b);if(join(a,b))ans++;}printf("%d\n",n-ans);}return 0;}