当前位置:网站首页>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
}
}
边栏推荐
- JVM garbage collection detailed learning notes (II)
- Several methods of calculating the average value of two numbers
- PMP Exam Preparation experience systematically improve project management knowledge through learning
- Reflections on the way of enterprise IT architecture transformation (Alibaba's China Taiwan strategic thought and architecture practice)
- Common operating commands of Linux
- C语言指针(特别篇)
- PMP certificate preparation experience sharing
- DRF authentication, permissions, and flow restrictions (only for views in DRF)
- Screen automatically generates database documents
- MySQL common statements
猜你喜欢
Full link voltage test of the e-commerce campaign Guide
端口复用和重映像
Implementation of corner badge of Youmeng message push
Selenium mouse sliding operation event
How to pass the PMP Exam in a short time?
外部中断实现按键实验
On December 8th, 2020, the memory of marketing MRC application suddenly increased, resulting in system oom
STM32串口寄存器库函数配置方法
Do you have any certificates with high gold content?
Port multiplexing and re imaging
随机推荐
Expérience de port série - simple réception et réception de données
数据在内存中的存储
寄存器地址名映射
PMP Exam Preparation experience systematically improve project management knowledge through learning
C language pointer (Part 2)
Pytest+request+allure+excel interface automatic construction from 0 to 1 [familiar with framework structure]
Locust performance test 5 (analysis)
Skill review of test engineer before interview
Storage of data in memory
【Istio Network CRD VirtualService、Envoyfilter】
STM32串口寄存器库函数配置方法
Confitest of fixture py
Idea development environment installation
With an annual salary of 50W, Alibaba P8 will come out in person to teach you how to advance from testing
What is the value of getting a PMP certificate?
Output a spiral matrix C language
Output all composite numbers between 6 and 1000
How does the project manager write the weekly summary and weekly plan?
PMP examination experience sharing
Vagrant failed to mount directory mount: unknown filesystem type 'vboxsf'