并查集求不相交集合的个数 模板
#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f #define ll __int64 using namespace std; int r[50005],n,m,vis[50005],ans; int root(int a) { if(r[a]==a) return a; else return r[a]=root(r[a]); } void merge(int a,int b) { int ra,rb; ra=root(a); rb=root(b); if(ra==rb) return; ans--;//若两个属于同一集合 则合并 并把总数减1 if(ra