并查集理论基础
并查集理论基础很重要,明确并查集解决什么问题,代码如何写,对后面做并查集类题目很有帮助。
并查集理论基础 | 代码随想录
寻找存在的路径
并查集裸题,学会理论基础后,本题直接可以直接刷过
代码随想录
#include <iostream>
#include <vector>
using namespace std;
const int n = 1000;
vector<int>father(n, 0);
void init() {for (int i = 0; i < n; i++) {father[i] = i;}
}
int find(int n) {return father[n] == n ? n : father[n] = find(father[n]);
}
int isSame(int n, int v) {n=find(n);v=find(v);return n == v;
}
void join(int n, int v) {n=find(n);v=find(v);if (n == v)return;father[v] = n;
}
void solve() {int n, m;cin >> n >> m;for (int i = 0; i < m; i++) {int a, b;cin >> a >> b;join(a, b);}int source, destination;cin >> source >> destination;cout << isSame(source, destination) << endl;
}
int main() {init();solve();return 0;
}