Day55 >> 并查集理论基础 + 107、寻找存在的路线

代码随想录-图论Part5

107、寻找存在的路线

java 复制代码
import java.util.*;
 
public class Main{
    public static void main(String[] args) {
        int N, M;
        Scanner scanner = new Scanner(System.in);
        N = scanner.nextInt();
        M = scanner.nextInt();
        DisJoint disJoint = new DisJoint(N + 1);
        for (int i = 0; i < M; ++i) {
            disJoint.join(scanner.nextInt(), scanner.nextInt());
        }
        if(disJoint.isSame(scanner.nextInt(), scanner.nextInt())) {
            System.out.println("1");
        } else {
            System.out.println("0");
        }
    }
 
}

//并查集模板
class DisJoint{
    private int[] father;
 
    public DisJoint(int N) {
        father = new int[N];
        for (int i = 0; i < N; ++i){
            father[i] = i;
        }
    }
 
    public int find(int n) {
        return n == father[n] ? n : (father[n] = find(father[n]));
    }
 
    public void join (int n, int m) {
        n = find(n);
        m = find(m);
        if (n == m) return;
        father[m] = n;
    }
 
    public boolean isSame(int n, int m){
        n = find(n);
        m = find(m);
        return n == m;
    }
 
}
相关推荐
想你依然心痛4 小时前
Linux用户空间与内核空间通信:netlink、ioctl、mmap 零拷贝与性能对比
linux·运维·服务器
沉静的小伙4 小时前
在微服务中使用领域事件
java·运维·微服务
醇氧4 小时前
Spring 容器 Map 注入机制详解
java·后端·spring
栈溢出了4 小时前
Java Lambda 表达式笔记
java·开发语言·intellij-idea
会周易的程序员4 小时前
使用 pybind11 封装 C++ 日志库 microLog 为 Python 模块
java·c++·python·物联网·架构·日志·aiot
WZF-Sang5 小时前
网络基础——2
服务器·网络·c++·学习·网络编程·php
zhixingheyi_tian5 小时前
一份GC日志的解读
java·开发语言
ywl4708120875 小时前
ArrayList和LinkedList内部的实现原理和区别
java·java基础
沉静的小伙5 小时前
Spring事务
java·数据库·spring
apihz5 小时前
随机驾考题目(C 照科一 / 科四 2000+ 题)免费API调用教程
android·java·c语言·开发语言·网络协议·tcp/ip