当前位置:网站首页>leetcode-1319:连通网络的操作次数
leetcode-1319:连通网络的操作次数
2022-07-30 17:38:00 【菊头蝙蝠】
题目
用以太网线缆将 n 台计算机连接成一个网络,计算机的编号从 0 到 n-1。线缆用 connections 表示,其中 connections[i] = [a, b] 连接了计算机 a 和 b。
网络中的任何一台计算机都可以通过网络直接或者间接访问同一个网络中其他任意一台计算机。
给你这个计算机网络的初始布线 connections,你可以拔开任意两台直连计算机之间的线缆,并用它连接一对未直连的计算机。请你计算并返回使所有计算机都连通所需的最少操作次数。如果不可能,则返回 -1 。
示例 1:

输入:n = 4, connections = [[0,1],[0,2],[1,2]]
输出:1
解释:拔下计算机 1 和 2 之间的线缆,并将它插到计算机 1 和 3 上。
示例 2:

输入:n = 6, connections = [[0,1],[0,2],[0,3],[1,2],[1,3]]
输出:2
示例 3:
输入:n = 6, connections = [[0,1],[0,2],[0,3],[1,2]]
输出:-1
解释:线缆数量不足。
示例 4:
输入:n = 5, connections = [[0,1],[0,2],[3,4],[2,3]]
输出:0
解题
方法一:并查集
比如有n台电脑,如果连接线数小于n-1,那么一定是没法成功的。
如果连线数大于等于n-1,那么一定可以通过一定的修改,以此来修改成功由于连接数大于等于n-1则一定可以修改成功,那么可以使用并查集,得到最后剩下的集合个数m,那么最后需要修改的,就需要m-1根即可。
class UnionFind{
private:
vector<int> parent;
int setNum;
public:
UnionFind(int n){
parent.resize(n);
iota(parent.begin(),parent.end(),0);
setNum=n;
}
int find(int index){
if(parent[index]==index) return index;
return parent[index]=find(parent[index]);
}
void unite(int index1,int index2){
int p1=find(index1);
int p2=find(index2);
if(p1!=p2){
parent[p1]=p2;
setNum--;
}
}
int getSetNum(){
return setNum;
}
};
class Solution {
public:
int makeConnected(int n, vector<vector<int>>& connections) {
if(connections.size()<n-1) return -1;//n台电脑,至少需要n-1条线,否则不可能成功
UnionFind uf(n);
for(vector<int>& conn:connections){
uf.unite(conn[0],conn[1]);
}
return uf.getSetNum()-1;//如果还剩下m个集合,那么修改m-1条线
}
};
边栏推荐
- 简易的命令行入门教程
- Graph Attention Mechanism
- un7.30:linux——如何在docker容器中安装MySQL?
- Microsoft Office 2019 软件下载安装详细教程!
- 图注意力机制
- JMeter笔记3 | JMeter安装和环境说明
- 一个 15 年 SAP ABAP 开发人员分享的 SAPGUI 一些个性化设置和实用小技巧试读版
- weiit新零售小程序如何探索数字化门店的破局之路
- ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法
- 【Cloud Store Announcement】Notice of Help Center Update on July 30
猜你喜欢

一篇文 带你搞懂,虚拟内存、内存分页、分段、段页式内存管理(超详细)

ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法

Mo Team - Elegant Violence

图卷积神经网络的数学原理——谱图理论和傅里叶变换初探

自动化早已不是那个自动化了,谈一谈自动化测试现状和自我感受……

公司部门来了个00后测试卷王之王,老油条表示真干不过,已经...

Metaverse Web 3.0 和 DeFi大师班

JMeter笔记3 | JMeter安装和环境说明

知识蒸馏3:YOLOV5项目准备

Wincc报表教程(SQL数据库的建立,wincc在数据库中保存和查询数据,调用Excel模板把数据保存到指定的位置和打印功能)
随机推荐
顺通海关查验预约综合管理系统
有效的括号字符串[贪心练习]
Ecplise执行C语言报错:cannot open output file xxx.exe: Permission denied
线程同步 控制执行顺序
ERROR 2003 (HY000) Can't connect to MySQL server on 'localhost3306' (10061)Solution
ERROR 2003 (HY000) Can‘t connect to MySQL server on ‘localhost3306‘ (10061)解决办法
Error EPERM operation not permitted, mkdir 'Dsoftwarenodejsnode_cache_cacach Two solutions
C陷阱与缺陷 第6章 预处理器 6.2 宏并不是函数
FastJson反序列化漏洞(复现)
Metaverse Web 3.0 和 DeFi大师班
esp32系列(5):esp32 蓝牙架构学习
腾讯专家献上技术干货,带你一览腾讯广告召回系统的演进
【AAAI2020】阿里DMR:融合Matching思想的深度排序模型
592. Fraction Addition and Subtraction
un7.30:Linux——如何在docker容器中显示MySQL的中文字符?
优酷视频元素内容召回系统:多级多模态引擎探索
SLIM: Sparse Linear Methods (TopN推荐)
【综合类型第 34 篇】喜讯!喜讯!!喜讯!!!,我在 CSDN 的第一个实体铭牌
躲避雪糕刺客?通过爬虫爬取雪糕价格
C陷阱与缺陷 第7章 可移植性缺陷 7.4 字符是有符号数还是无符号数