算法|每日一题|统计无向图中无法互相到达点对数|并查集

2316. 统计无向图中无法互相到达点对数

原题地址: 力扣每日一题:统计无向图中无法互相到达点对数

给你一个整数 n ,表示一张 无向图 中有 n 个节点,编号为 0 到 n - 1 。同时给你一个二维整数数组 edges ,其中 edgesi = ai, bi 表示节点 ai 和 bi 之间有一条 无向 边。

请你返回 无法互相到达 的不同 点对数目 。

java 复制代码
class Solution {
	// 主打一个套用模板
    public long countPairs(int n, int[][] edges) {
        UnionFind uf = new UnionFind(n);
        for (int[] edge : edges) {
            int x = edge[0], y = edge[1];
            uf.union(x, y);
        }
        long res = 0;
        for (int i = 0; i < n; i++) {
            res += n - uf.getSize(uf.find(i));
        }
        return res / 2;
    }
}

class UnionFind {
    int[] parents;
    int[] sizes;

    public UnionFind(int n) {
        parents = new int[n];
        for (int i = 0; i < n; i++) {
            parents[i] = i;
        }
        sizes = new int[n];
        Arrays.fill(sizes, 1);
    }
    
    public int find(int x) {
        if (parents[x] == x) {
            return x;
        } else {
            parents[x] = find(parents[x]);
            return parents[x];
        }
    }

    public void union(int x, int y) {
        int rx = find(x), ry = find(y);
        if (rx != ry) {
            if (sizes[rx] > sizes[ry]) {
                parents[ry] = rx;
                sizes[rx] += sizes[ry];
            } else {
                parents[rx] = ry;
                sizes[ry] += sizes[rx];
            }
        }
    }

    public int getSize(int x) {
        return sizes[x];
    }
}

如果对您有帮助,请点赞关注支持我,谢谢!❤

如有错误或者不足之处,敬请指正!❤

相关推荐
Matrix_111 分钟前
第13篇:非线性位移场——漩涡、鱼眼、水波纹与球面化
图像处理·算法
lili00122 分钟前
Claude自动修Bug配置优化与避坑指南
java·人工智能·python·bug·ai编程
逻极2 分钟前
Java 从入门到精通:核心原理、最佳实践与性能优化
java·jvm·并发编程·集合框架
金牌归来发现妻女流落街头3 分钟前
【LeetCode 第207题】
算法·leetcode·拓扑·领接表
熬夜敲代码的猫10 分钟前
AVL树(C++详解版)
数据结构·c++·算法
摇滚侠18 分钟前
SpringBoot 内嵌 TongWeb 东方通替换 Tomcat
java·spring boot·spring
HeLiang721 分钟前
proguard 混淆 使用JDK17 的 springboot4 + JPA
java·spring boot·proguard
武子康22 分钟前
Java-10 深入浅出 MyBatis 一对多与多对多查询配置详解
java·后端
一 乐23 分钟前
网上订餐系统|基于springboot的网上订餐系统设计与实现(源码+数据库+文档)
java·数据库·spring boot·后端·论文·毕设·网上订餐系统
摇滚侠23 分钟前
我把一个依赖安装到了本地仓库,但是IDEA 刷新 maven 提示远程私服仓库找不到,怎么解决
java·maven·intellij-idea