模板: 登录后复制 class UF { private: vector<int>father;//father数组 vector<int>rank;//秩 int count;//连通分支数 public: UF()//构造函数初始化并查集,元素各自成营 { father.assign(n,0); rank.assign(n,0); for :每个元素 { father[编号]=编号; count++; } } int find(int x) { return x==father[x]?x:(father[x]=find(father[x]); //如果x父节点是x,说明x是根节点,返回x //如果x不是根节点,x的父节点指向x父节点的根节点,并且返回根节点 } void Union(int x,int y) { int rootx=find(x);//rootx为x的根节点 int rooty=find(y);//rooty为y的根节点 if(rootx==rooty) { return; } if(rank[rootx]>rank[rooty]) { father[rooty]=rootx; } else if(rank[rootx]<rank[rooty]) { father[rootx]=rooty; } else { father[rooty]=rootx; rank[rootx]++; } count--;//连通分支数-1 } int get() { return count; } }; 1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53. 原创作者: u_16969274 转载于: https://blog.51cto.com/u_16969274/11813442