107. 尋找存在的路徑 題目 思路與解法 #include <iostream> #include <vector> using namespace std;int n; // 節點數量 vector<int> father = vector<int> (101, 0); // 按照節點大小定義數組大小// 并查集初始化 void init() {for (int i = 1; i <= n; i++) father[i] = i; } // 并查集里尋根的過程 int find(int u) {return u == father[u] ? u : father[u] = find(father[u]); }// 判斷 u 和 v是否找到同一個根 bool isSame(int u, int v) {u = find(u);v = find(v);return u == v; }// 將v->u 這條邊加入并查集 void join(int u, int v) {u = find(u); // 尋找u的根v = find(v); // 尋找v的根if (u == v) return ; // 如果發現根相同,則說明在一個集合,不用兩個節點相連直接返回father[v] = u; }int main() {int m, s, t, source, destination;cin >> n >> m;init();while (m--) {cin >> s >> t;join(s, t);}cin >> source >> destination;if (isSame(source, destination)) cout << 1 << endl;else cout << 0 << endl; }