算法训练 | 图论Part5 | 107. 寻找存在的路径

目录

[107. 寻找存在的路径](#107. 寻找存在的路径)

并查集法


107. 寻找存在的路径

并查集法
  • 代码一:并查集
cpp 复制代码
#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;
}
相关推荐
消失的旧时光-19434 分钟前
c++ 的标准库 --- std::
c++·jni
GiraKoo22 分钟前
【GiraKoo】C++11的新特性
c++·后端
不午睡的探索者25 分钟前
告别性能瓶颈!Python 量化工程师,进击 C++ 高性能量化交易的“必修课”!
c++·github
OpenC++25 分钟前
【C++】观察者模式
c++·观察者模式·设计模式
Wo3Shi4七30 分钟前
双向队列
数据结构·算法·go
Wo3Shi4七34 分钟前
列表
数据结构·算法·go
老歌老听老掉牙35 分钟前
粒子群优化算法实现与多维函数优化应用
c++·pso·粒子群算法
Wo3Shi4七40 分钟前
链表
数据结构·算法·go
Wo3Shi4七1 小时前
数组
数据结构·算法·go
myloveasuka1 小时前
信号操作集函数
linux·运维·服务器·c语言·c++·vscode