最近家庭聚會也真很多,爲啥作題這麼應景...ios
水題,加上集合的利用,並查集spa
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <set> using namespace std; const int maxn= 1e3; int pa[maxn]; int T, N, M; set<int> grp; int Find(int x) { if (x== pa[x]){ return x; } return pa[x]= Find(pa[x]); } void Merge(int x, int y) { x= Find(x); y= Find(y); if (x== y){ return; } pa[y]= x; } void Init(int n) { grp.clear(); for (int i= 1; i< n+1; ++i){ pa[i]= i; } } int main() { int x, y; scanf("%d", &T); for (int i= 0; i< T; ++i){ scanf("%d %d", &N, &M); Init(N); for (int j= 0; j< M; ++j){ scanf("%d %d", &x, &y); Merge(x, y); } for (int j= 1; j< N+1; ++j){ grp.insert(Find(j)); } printf("%d\n", int(grp.size())); } return 0; }