并查集的实现~
//并查集的实现 int root[MAXN];//记录每个节点的根节点 void init(int x)//初始化 { for(int i=0;i<x;i++)root[i]=i;//每个节点开始时独立 } int getroot(int x)//取出根节点,顺便压缩路径 { if(x!=root[x])root[x]=getroot(root[x]); return root[x]; } inline int unionset(int x1,int x2)//合并俩集合 { int a=getroot(x1),b=getroot(x2); root[a]=b; }