代码随想录day55 107. 寻找存在的路径
代码随想录
#include <vector>
#include <iostream>
using namespace std;
int find(vector<int> & father, int u) {
return u == father[u] ? u : father[u] = find(father, father[u]);
}
void init(vector<int> & father) {
for (int i = 0; i < father.size(); i++) {
father[i] = i;
}
}
bool isSame(vector<int> & father, int u, int v) {
int s = find(father, u);
int t = find(father, v);
return s == t;
}
void join(vector<int> & father, int u, int v) {
int s = find(father, u);
int t = find(father, v);
if (s == t) return;
father[t] = s;
}
int main() {
int N, M, s, t, source, destination;
cin >> N >> M;
vector<int> father(N + 1, 0);
init(father);
while(M--) {
cin >> s >> t;
join(father, s, t);
}
cin >> s >> t;
if (isSame(father, s, t)) {
cout << 1;
} else {
cout << 0;
}
return 0;
}