How Many Tables
题意:就是问有多少个集合
思路:并查集
#include<bits/stdc++.h> using namespace std; int f[1007]; int find(int x) { if(f[x]==x) return x; else return f[x]=find(f[x]); } void merge(int x,int y) { int fx,fy; fx = find(x); fy = find(y); if(fx != fy) f[fx]=fy; } int main() { int n,m,i,x,y,T; cin>>T; while(T--) { cin>>n>>m; for(i=1; i<=n; i++) { f[i]=i; } for(i=0; i<m; i++) { cin>>x>>y; merge(x,y); } int sum=0; for(i=1; i<=n; i++) { if(f[i]==i) sum++; } cout<<sum<<endl; } return 0; }