题目大意:
给出一些关系,关系上两人相互认识,就可以使用同一张桌,问最少需呀多少桌子
大致思路:
并查集。。。。第一次写没压缩超内存了QAQ
c++:
#include<cstdio>
const int MAXN=1000+50;
int p[MAXN];
int find(int x){
return x!=p[x]?p[x]=find(p[x]):x;
}
void unite(int a,int b){
p[a]=b;
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
while(n--){
int N,M;
scanf("%d%d",&N,&M);
for(int i=1;i<=N;i++){
p[i]=i;
}
for(int i=0;i<M;i++){
int a,b;
scanf("%d%d",&a,&b);
a=find(a),b=find(b);
if(a!=b)
unite(a,b);
}
int cnt=0;
for(int i=1;i<=N;i++)
if(p[i]==i)
cnt++;
printf("%d\n",cnt);
}
}
return 0;
}