HDU 1213 How Many Tables

81 阅读1分钟

题意:

对于给出的人物关系,求出共有几波人。比如1认识2,2认识3,那么1,2,3就是同一波人。

思路:

就是并查集,没有坑点。

#include<iostream>
#include<cstdio>
using namespace std;
int f[1100];
int n,m,co;
void mem(){
	for(int i=1;i<=n;i++)
		f[i]=i;
} 
int find(int x){
	if(x!=f[x])
		f[x]=find(f[x]);
	return f[x];
}
void uni(int a,int b){
	a=find(a);
	b=find(b);
	if(a!=b){
		f[a]=b;
	}
}
int main(){
	int t;
	scanf("%d",&t);
	while(t--){
		scanf("%d%d",&n,&m);
		co=0;
		mem();
		int a,b;
		for(int i=0;i<m;i++){
			scanf("%d%d",&a,&b);
			uni(a,b);
		}
		for(int i=1;i<=n;i++)
			if(f[i]==i) co++;
		printf("%d\n",co);
		
	}
	
	return 0;
} 


\