当前位置: 首页 > news >正文

代码随想录算法训练营打卡第55天:并查集相关问题;

Java并查集的模板

//并查集模板
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;}}

并查集相关题目:107. 寻找存在的路径

文章链接:代码随想录

题解如下:

import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int M=sc.nextInt();
int N=sc.nextInt();
Bjc bcj=new Bjc(M+1);
for(int i=0;i<N;i++){
bcj.join(sc.nextInt(),sc.nextInt());
}if(bcj.isSame(sc.nextInt(),sc.nextInt())){
System.out.println("1");
}else{
System.out.println("0");
}}
}class Bcj{
private int[] father;
public Bjc(int N){
father=new int[N];
for(int i=0;i<N;++i){
father[i]=i;
}
}public int find(int n){return father[n]==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;
}
}

http://www.lryc.cn/news/532272.html

相关文章:

  • K8S学习笔记-------1.安装部署K8S集群环境
  • 云原生周刊:K8s引领潮流
  • C_位运算符及其在单片机寄存器的操作
  • 【算法篇】贪心算法
  • Selenium 浏览器操作与使用技巧——详细解析(Java版)
  • ioDraw桌面版 v3.4.0发布!AI文生图,AI图生图,手绘风格一键转换!
  • 深入理解Node.js_架构与最佳实践
  • 安装和卸载RabbitMQ
  • 第27节课:安全审计与防御—构建坚固的网络安全防线
  • 【蓝桥杯】日志统计
  • 23.Word:小王-制作公司战略规划文档❗【5】
  • 基于单片机的智能安全插座(论文+源码)
  • 2025年人工智能技术:Prompt与Agent的发展趋势与机遇
  • vue2-v-if和v-for的优先级
  • C++六大默认成员函数
  • 基于springboot校园点歌系统
  • pycharm 中的 Mark Directory As 的作用是什么?
  • 【Elasticsearch】文本分类聚合Categorize Text Aggregation
  • 算法随笔_40: 爬楼梯
  • 【Linux探索学习】第二十七弹——信号(一):Linux 信号基础详解
  • 【数学】矩阵、向量(内含矩阵乘法C++)
  • 设置git区分大小写
  • 排序算法与查找算法
  • Github 2025-01-31Java开源项目日报 Top10
  • Java进阶笔记(中级)
  • 2025游戏行业的趋势预测
  • 4-ET框架demo的运行
  • kamailio源文件modules.lst的内容解释
  • 亚远景-从SPICE到ASPICE:汽车软件开发的标准化演进
  • vue3 + ElementPlus 封装列表表格组件包含分页