HDU1213- How Many Tables

题目链接

#include<stdio.h>
#include<stdlib.h>
int parent[1000];
int res;
int i;
int n,pair;
int find(int x)
{
	return(x==parent[x])?x:(parent[x]=find(parent[x]));
}
void unite(int x,int y)
{
	x=find(x);
	y=find(y);
	if(x!=y){
		parent[x]=y;
		res--;
	}
}
void init(){
	scanf("%d%d",&n,&pair);
	res=n;
	for( i=1;i<=n;i++)
	{
		parent[i]=i;
	}
}
int main(){
	int t ;
	scanf("%d",&t);
	while(t--)
	{
		init();
		for( i=1;i<=pair;i++)
		{
			int num1,num2;
			scanf("%d%d",&num1,&num2);
			unite(num1,num2);
		}
		printf("%d\n",res);
	}
}

猜你喜欢

转载自blog.csdn.net/weixin_41988545/article/details/81063990
今日推荐