算法训练 | 图论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;
}
相关推荐
恒者走天下1 分钟前
AI智能体通讯项目(底层AI通讯协议实现)
c++
英雄各有见12 分钟前
Chapter 5.1.1: 编写你的第一个GPU kernel——Cuda Basics
c++·gpu·cuda·hpc
清铎20 分钟前
leetcode_day12_滑动窗口_《绝境求生》
python·算法·leetcode·动态规划
linweidong25 分钟前
嵌入式电机:如何在低速和高负载状态下保持FOC(Field-Oriented Control)算法的电流控制稳定?
stm32·单片机·算法
梵尔纳多30 分钟前
OpenGL着色器语言(GLSL)
c++·opengl·着色器
net3m3340 分钟前
单片机屏幕多级菜单系统之当前屏幕号+屏幕菜单当前深度 机制
c语言·c++·算法
mmz120741 分钟前
二分查找(c++)
开发语言·c++·算法
陌路201 小时前
C++30 STL容器 -deque双端队列
开发语言·c++
AI视觉网奇1 小时前
ue 自己制作插件 c++
c++·ue5
Insight1 小时前
拒绝手动 Copy!一文吃透 PyTorch/NumPy 中的广播机制 (Broadcasting)
算法