任务日期:7.31
题目一链接:108. 冗余连接 (kamacoder.com)
思路:从前到后遍历边,如果当前两个点不在一个集合就使他们加入到一个集合,构成树,如果位于一个集合则输出他们,因为如果把他们加入就会形成环
代码:
#include <bits/stdc++.h>
using namespace std;
std::vector<int> father(1010,0);//按照节点大小范围定义数组
int n;
void unit() {
for(int i = 0;i < n;i ++) {
father[i] = i;
}
}
int find(int u) {//寻找u的根节点
return u == father[u] ? u : find(father[u]);//压缩距离:递归到下一层
}
void joint(int u,int v) {
u = find(u);//这样节约空间不用重新定义新变量
v = find(v);
if(u == v) return;
else father[v] = u;
}
bool issame(int u,int v) {
u = find(u);
v = find(v);
return u == v;//bool函数可以返回true或者false
}
int