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

19873连通块中点的数量

19873连通块中点的数量

⭐️难度:中等
🌟考点:连通块、并查集
📖
在这里插入图片描述

📚

package test;

import java.util.Scanner;

public class Main {
    static int N = 100010;
    static int[] a = new int[N];
    static int[] p = new int[N];
    static int[] size = new int[N];
    static int n;
    static int m;

    // 路径优化
    static int find(int x) {
        return p[x] == x ? x : (p[x] = find(p[x]));
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        n = sc.nextInt();
        m = sc.nextInt();

        // 初始化并查集
        for (int i = 1; i <= n; i++) {
            a[i] = i;
            p[i] = i; // 每个点的父节点初始化为自身
            size[i] = 1;
        }

        for (int i = 1; i <= m; i++) {
            String op = sc.next();
            if (op.equals("C")) {
                int x = sc.nextInt();
                int y = sc.nextInt();
                int px = find(x);
                int py = find(y);
                if (px != py) {
                    size[py] += size[px]; // 先更新 size 数组
                    p[px] = py; // 再合并
                }
            } else if (op.equals("Q1")) {
                int x = sc.nextInt();
                int y = sc.nextInt();
                if (find(x) == find(y)) {
                    System.out.println("Yes");
                } else {
                    System.out.println("No");
                }
            } else {
                int x = sc.nextInt();
                System.out.println(size[find(x)]);
            }
        }
    }
}

相关文章:

  • std::ranges::views::common, std::ranges::common_view
  • 小程序渲染之谜:如何解决“加载中...”不消失的 Bug(glass-easel)
  • 跳表实现学习
  • Linux远程工具SecureCRT下载安装和使用
  • Python文件,模块
  • ​【C++设计模式】第二十三篇:观察者模式(Observer)
  • HOT100系列——(普通数组+矩阵)
  • DB-GPT-0.7版本win11安装,最新版本,安装方式变更了
  • ELK traceId 通过A服务调用B服务举例
  • 『MaxKB』MaxKB源码在Docker环境的部署实战
  • 第27周JavaSpringboot电商进阶开发 2.常用功能进阶
  • 要登录的设备ip未知时的处理方法
  • WPF-DataGrid的增删查改
  • 【MapSet】哈希表
  • 麒麟操作系统和统信的区别,上面一般用什么OFFICE,excel软件?
  • Java 什么是线程安全及如何实现线程安全
  • EasyRTC嵌入式音视频通话SDK:基于纯C语言的跨平台实时通信系统设计与实践
  • leetcode144 二叉树的前序遍历 递归法、迭代法
  • 一维数组的增删改查:对元素的影响
  • 解决pip安装uv时下载速度慢
  • 浦江潮涌征帆劲,上海以高质量发展服务全国发展大局
  • 专利申请全球领先!去年我国卫星导航与位置服务产值超5700亿
  • 篮球培训机构东方启明星被指停摆,家长称已登记未退费用超百万
  • 俄乌直接谈判结束
  • 一图读懂丨创新创业人才最高补贴500万元!临港新片区发布创客新政“十二条”
  • 涉案资金超2亿元 “健康投资”骗局,专挑老年人下手