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;
    }
 
}
相关推荐
惊岁晚5 分钟前
【WSL】anaconda安装配置
linux·运维·服务器
hashiqimiya5 分钟前
spring框架springbean依赖及单一项目
java·前端·spring
sinat_2554878112 分钟前
FileReader/FileWriter
java·开发语言·jvm
历程里程碑16 分钟前
37 线程安全单例模式深度解析
java·服务器·开发语言·前端·javascript·c++·排序算法
柒.梧.17 分钟前
深入理解 HashMap 扩容流程:从 1.7 到 1.8 的演进与细节解析
java
皙然19 分钟前
深入解析 Java 中的 final 关键字
java·开发语言·算法
liulilittle20 分钟前
解决 liburing 编译时缺失 `linux/time_types.h` 的问题
linux·运维·服务器·ubuntu·shell
东离与糖宝25 分钟前
AI IDE冲击下,Java老项目如何平滑迁移到Cursor/AI编程工作流(完整迁移方案)
java·人工智能
刺客xs25 分钟前
C++ 11新特性
java·开发语言·c++