#include<cstdio> #include<cstring> using namespace std; const int maxn=100; int n; void init() { for (i=1;i<=n;i++) fa[i]=i; } int find(int i)//查询所属集合 { if (fa[i]!=i) return fa[i]=find(fa[i]);//路径压缩 return i; } void Union(int i,int j)//合并 { fa[find(i)]=find(j); } /* CALL: init(); find(); Union(); */ 写了一个简单的模板。