当前位置:网站首页>Leetcode daily questions (2316. count unreachable pairs of nodes in an undirected graph)
Leetcode daily questions (2316. count unreachable pairs of nodes in an undirected graph)
2022-07-07 09:14:00 【wangjun861205】
You are given an integer n. There is an undirected graph with n nodes, numbered from 0 to n - 1. You are given a 2D integer array edges where edges[i] = [ai, bi] denotes that there exists an undirected edge connecting nodes ai and bi.
Return the number of pairs of different nodes that are unreachable from each other.
Example 1:
Input: n = 3, edges = [[0,1],[0,2],[1,2]]
Output: 0
Explanation: There are no pairs of nodes that are unreachable from each other. Therefore, we return 0.
Example 2:
Input: n = 7, edges = [[0,2],[0,5],[2,4],[1,6],[5,4]]
Output: 14
Explanation: There are 14 pairs of nodes that are unreachable from each other:
[[0,1],[0,3],[0,6],[1,2],[1,3],[1,4],[1,5],[2,3],[2,6],[3,4],[3,5],[3,6],[4,6],[5,6]].
Therefore, we return 14.
Constraints:
- 1 <= n <= 105
- 0 <= edges.length <= 2 * 105
- edges[i].length == 2
- 0 <= ai, bi < n
- ai != bi
- There are no repeated edges.
use union-find To turn every isolated graph into a tree , Then we can get the number of nodes in each tree , hypothesis nodes[i] Is the number of nodes in the current tree , that n - nodes[i] Is the number of nodes that are not connected to the nodes in the current tree , nodes[i] * (n - nodes[i]) Namely pair The number of , Traverse all the numbers to calculate pair The final answer is to add up the quantity
use std::collections::HashMap;
impl Solution {
fn find(parent: &mut Vec<i32>, n: i32) -> i32 {
let mut p = parent[n as usize];
if p == n {
return p;
}
p = Solution::find(parent, p);
parent[n as usize] = p;
p
}
fn union(parent: &mut Vec<i32>, a: i32, b: i32) {
let pa = Solution::find(parent, a);
let pb = Solution::find(parent, b);
parent[pa as usize] = pb;
}
pub fn count_pairs(n: i32, edges: Vec<Vec<i32>>) -> i64 {
let mut parent: Vec<i32> = (0..n).collect();
for e in edges {
Solution::union(&mut parent, e[0], e[1]);
}
while {
let mut modified = false;
for i in 0..n as usize {
let pp = parent[parent[i] as usize];
if parent[i] != pp {
Solution::union(&mut parent, i as i32, pp);
modified = true;
}
}
modified
} {
}
let m = parent.into_iter().fold(HashMap::new(), |mut m, v| {
*m.entry(v).or_insert(0) += 1;
m
});
let mut ans = 0;
for v in m.values() {
ans += *v * (n as i64 - *v);
}
ans / 2
}
}
边栏推荐
- Alibaba P8 teaches you how to realize multithreading in automated testing? Hurry up and stop
- Led analog and digital dimming
- Troublesome problem of image resizing when using typora to edit markdown to upload CSDN
- 5A summary: seven stages of PMP learning
- When inputting an expression in the input box, an error is reported: incorrect string value:'\xf0\x9f... ' for column 'XXX' at row 1
- Postman interface test (I. installation and use)
- 【istio简介、架构、组件】
- Calf problem
- C language pointer (special article)
- 外部中断实现按键实验
猜你喜欢

2022-07-06 unity core 9 - 3D animation

Implementation of corner badge of Youmeng message push

Synchronized underlying principle, volatile keyword analysis

What is the use of PMP certificate?

2022-06-30 unity core 8 - model import

C语言指针(特别篇)

Summary of PMP learning materials

Ppt template and material download website (pure dry goods, recommended Collection)

MySql数据库-索引-学习笔记

2022-06-30 Unity核心8——模型导入
随机推荐
OpenGL三维图形绘制
MySQL master-slave delay solution
Count the number of words C language
What is the rating of Huishang futures company? Is it safe to open an account? I want to open an account, OK?
With an annual salary of 50W, Alibaba P8 will come out in person to teach you how to advance from testing
Postman interface test (II. Set global variables \ sets)
Two schemes of unit test
LED模拟与数字调光
【SVN】SVN是什么?怎么使用?
Unity shader beginner's Essentials (I) -- basic lighting notes
External interrupt to realize key experiment
Original collection of hardware bear (updated on June 2022)
How to use Arthas to view class variable values
【ChaosBlade:根据标签删除POD、Pod 域名访问异常场景、Pod 文件系统 I/O 故障场景】
Simulation volume leetcode [general] 1705 The maximum number of apples to eat
H3C VXLAN配置
How can I apply for a PMP certificate?
Postman interface test (I. installation and use)
Cmake command line use
Several stages of PMP preparation study