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

笔记:代码随想录算法训练营day62:108.冗余连接、109.冗余连接II

学习资料:代码随想录

108. 冗余连接

卡码网题目链接(ACM模式)

判断是否有环的依据为,利用并查集,isSame函数,判断当下这条边的两个节点入集前是否为同根,如果是的话,该边就是会构成环的那条边

#include <iostream>
#include <vector>
using namespace std;int n;
vector<int> father=vector<int>(1001,0);void init(){for(int i=0;i<n;i++){father[i]=i;}
}
int find(int u){return u==father[u]?u:father[u]=find(father[u]);
}bool isSame(int u,int v){u=find(u);v=find(v);return u==v;
}void join(int u,int v){u=find(u);v=find(v);if(u==v) return;father[v]=u;
}int main(){int s,t;cin>>n;init();for(int i=0;i<n;i++){cin>>s>>t;if(isSame(s,t)) {cout<<s<<' '<<t<<endl;return 0;}else{join(s,t);}}
}

109. 冗余连接II

卡码网题目链接(ACM模式)

分三种情况:代码随想录

对于有两个入度的节点的情况,需要先倒序记录节点入度情况,找到入度为2的那个节点对应的两条边,判断应该删除哪条边。判断方法为,先看第一条(之前是倒序遍历,即看最后这条),用isSame函数判段是否为构成环的这条边,如果是,cout这条,如果不是cout另一条;

如果没有入度为2的节点,即情况3,直接用isSame函数判断就可以了

#include <iostream>
#include <vector>
using namespace std;
int n;
vector<int> father=vector<int>(1001,0);
void init(){for(int i=1;i<=n;i++){father[i]=i;}
}int find(int u){return u==father[u]?u:father[u]=find(father[u]);
}bool isSame(int u,int v){u=find(u);v=find(v);return u==v;
}void join(int u,int v){u=find(u);v=find(v);if(u==v) return;father[v]=u;
}bool isTreeAfterDeleteEdge(const vector<vector<int>>& edges,int todelete){init();for(int i=0;i<n;i++){if(i==todelete){continue;}if(isSame(edges[i][0],edges[i][1])) return false;join(edges[i][0],edges[i][1]);}return true;
}void deletedEdge(const vector<vector<int>>& edges){init();for(int i=0;i<n;i++){if(isSame(edges[i][0],edges[i][1])){cout<<edges[i][0]<<' '<<edges[i][1];return;}join(edges[i][0],edges[i][1]);}
}int main(){cin>>n;vector<vector<int>> edges;vector<int> inDegree(n+1,0);int s,t;for(int i=0;i<n;i++){cin>>s>>t;edges.push_back({s,t});inDegree[t]++;}vector<int> doubleDegree;for(int i=n-1;i>=0;i--){if(inDegree[edges[i][1]]==2){doubleDegree.push_back(i);}}if(doubleDegree.size()>0){if(isTreeAfterDeleteEdge(edges,doubleDegree[0])){cout<<edges[doubleDegree[0]][0]<<' '<<edges[doubleDegree[0]][1];}else{cout<<edges[doubleDegree[1]][0]<<' '<<edges[doubleDegree[1]][1];}return 0;}deletedEdge(edges);}

有几个小点:

1、既然 isTreeAfterRemoveEdge()getRemoveEdge() 都是靠并查集判断是否成环,能不能只用 getRemoveEdge() 一个函数来处理所有情况?

不能!

getRemoveEdge() 只能处理「无入度为 2」的情况(即情况三)
如果你碰到的是「有一个点入度为 2」(即情况一、情况二),就必须要先判断删哪一条边,这一步 getRemoveEdge() 做不到。

2、对于find函数会改变并查集的结构,这并不改变每一个节点的根节点,所以虽然在join函数和isSame函数的使用中,find会使并查集结构改变,对判断没有影响

3、对于vector,赋值方法v[i] = x需要以前设置vector大小,赋值方法v.push_back(x)不需要提前设置vector大小

相关文章:

笔记:代码随想录算法训练营day62:108.冗余连接、109.冗余连接II

学习资料&#xff1a;代码随想录 108. 冗余连接 卡码网题目链接&#xff08;ACM模式&#xff09; 判断是否有环的依据为&#xff0c;利用并查集&#xff0c;isSame函数&#xff0c;判断当下这条边的两个节点入集前是否为同根&#xff0c;如果是的话&#xff0c;该边就是会构…...

刚刚整理实测可用的股票数据API接口集合推荐:同花顺、雅虎API、智兔数服、聚合数据等Python量化分析各项数据全面丰富

在金融科技高速发展的今天&#xff0c;股票API接口已成为开发者、量化交易者和金融从业者的核心工具之一。它通过标准化的数据接口&#xff0c;帮助用户快速获取实时或历史市场数据&#xff0c;为投资决策、策略回测和金融应用开发提供支持。本文将深入解析股票API的核心功能、…...

消息队列Message Queue

前面&#xff0c;我们在黑点点评中秒杀场景中&#xff0c;首次了解到消息队列MQ&#xff0c;它主要解决了秒杀场景中异步场景&#xff0c;提升了并发性&#xff0c;吞吐量。可是还是对消息队列又很多的疑惑&#xff1f; 消息队列是什么 消息队列是一种通信协议或中间件&#…...

Day 25:股票的最大利润 + 1到n求和

数组 prices 记录了某芯片近期的交易价格&#xff0c;其中 prices[i] 表示的 i 天该芯片的价格。你只能选择 某一天 买入芯片&#xff0c;并选择在 未来的某一个不同的日子 卖出该芯片。请设计一个算法计算并返回你从这笔交易中能获取的最大利润。 如果你不能获取任何利润&…...

如何利用AI智能生成PPT提升工作效率

如何利用AI智能生成PPT提升工作效率&#xff1f;PPT制作曾经是每个人办公生活中的一大痛点。你有多久没有在制作PPT时感到焦头烂额&#xff0c;选模板、调整格式、插入图片&#xff0c;每一项都得花费大量的时间和精力&#xff0c;最后还未必能做出一份令人满意的效果。随着人工…...

WIN11 企业版 部署Dify+Docker

Dify&#xff08;Do it for you&#xff09;是一款开源的大语言模型应用开发平台&#xff0c;旨在简化AI应用的创建、部署和管理过程&#xff0c;使开发者能够更快速、更轻松地构建和运营基于GPT等模型的AI应用。 Dify平台创建和运营一个AI chatbot应用&#xff0c;涉及到登录…...

理解CMakeLists.txt文件

CMakeLists.txt(主入口) │ ├── 项目元信息(project, cmake_minimum_required) ├── 编译选项设置(option) ├── 编译标志设置(set(CMAKE_...)) ├── 查找依赖库(find_package, include_directories) ├── 注册插件、扩展(register_extension, add_subdi…...

1.25-20GHz/500ns超快跳频!盛铂SWFA300国产捷变频频率综合器模块赋能雷达/5G/电子战高频精密控制 本振/频综模块

盛铂SWFA300捷变频频率综合器模块简述&#xff1a; 盛铂科技国产SWFA300捷变频频率综合器是一款在频率范围内任意两点频率的跳频时间在500nS以内的高速跳频源&#xff0c;其输出频率范围为1.25GHz至20GHz&#xff0c;频率的最小步进为10kHz。同时它拥有优秀的相位噪声特性&…...

MySql修改全部表和字段编码

修改全部表 SELECT CONCAT(ALTER TABLE , TABLE_NAME, CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;) AS sql_statements FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA 数据库名称 返回的下面这种SQL,然后批量执行即可 ALTER TABLE gen_table CO…...

elementUI el-image图片加载失败解决

是不是&#xff0c;在网上找了一些&#xff0c;都不行&#xff0c;这里一行代码&#xff0c;解决&#xff0c;后端返回图片路径&#xff0c;el-image图片加载失败的问题 解决办法&#xff0c; vue项目里&#xff0c;index.html文件里加一行代码就可 <meta name"refe…...

代理IP协议详解HTTP、HTTPS、SOCKS5分别适用于哪些场景

“代理IP协议在现代网络通信中扮演着至关重要的角色。它们通过提供中间层服务&#xff0c;帮助用户匿名访问网络、绕过地理限制、提高安全性和加速数据传输。HTTP、HTTPS和SOCKS5是三种最常见的代理IP协议&#xff0c;每种协议都有其特定的用途和适用场景。” HTTP代理及其适用…...

UniApp开发多端应用——流式语音交互场景优化

一、问题背景&#xff1a;UniApp默认方案的局限性 在流式语音交互场景&#xff08;如AI语音助手、实时字幕生成&#xff09;中&#xff0c;UniApp默认的uni.getRecorderManager 和uni.createInnerAudioContext 存在以下瓶颈&#xff1a; 录音端&#xff1a; 延迟高&#xff1…...

AIGC工具平台-通用抠图换背景

本模块采用先进的大模型智能算法&#xff0c;精准识别并分割图像中的人物或物品主体&#xff0c;实现高效、精准、智能化的抠图处理。无论是人物肖像、产品展示&#xff0c;还是复杂场景&#xff0c;该工具均能准确提取主体&#xff0c;并自动适配至背景图像&#xff0c;实现自…...

word快速创建虚拟文字

创建虚拟文字的作用&#xff1a;如培训新员工使用 Word&#xff0c;用虚拟文字演示如何设置段落格式。不需要你随便乱敲文字或者去复制一段文字过来。帮你节约了时间&#xff01; 两个函数的使用必须在段落的开头&#xff01;&#xff01;&#xff01; rand函数 在 Word 中…...

win10下python脚本运行缺失ccache的问题处理

问题 python脚本运行时&#xff0c;会提醒参考 https://github.com/ccache/ccache/blob/master/doc/INSTALL.md 处理缺失ccache的问题。 下载编译 下载ccache主干版本&#xff0c; 例如 https://github.com/ccache/ccache/archive/refs/heads/master.zip 按照说明编译 mkd…...

大模型在支气管扩张预测及治疗方案制定中的应用研究

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与方法 1.3 国内外研究现状 二、大模型技术概述 2.1 大模型的基本原理与架构 2.2 适用于支气管扩张预测的大模型类型及特点 2.3 大模型在医疗领域的应用现状与优势 三、支气管扩张的相关医学知识 3.1 支气管扩张的病因…...

开发复合组件TLabel + TwwDBLookupCombo

老鸟跳过。。。。。。。。本文只是为小白准备的 -------------- TwwDBLookupCombo 组件是老牌控件包的 Inofpower 中的一个组件。Inofpower 很久也没有更新了&#xff0c;只是作了新版DELPHI的适配&#xff0c;组件的功能从D2007那些开始到现在&#xff0c;可以说几乎没有任何…...

ch05 课堂参考代码及部分题目思路

ch05 字典树 字典树&#xff08;Trie&#xff09;是一种用于实现字符串快速查找的多叉树结构&#xff0c;查找原理类似于我们在英文词典上查找单词。 字典树用边来代表字母&#xff0c;从根结点到树上某一结点的路径就代表了一个字符串。 字典树的表示 以字符集为小写字母的…...

0328-内存图2

是否正确待定&#xff1a; Perso类 package com.qc.内存图2;public class Perso {public int age;public String name;public static int flag;public void m1() {}public static void m2() {}Overridepublic String toString() {return "Perso [age" age "…...

【ESP32S3】esp32获取串口数据并通过http上传到前端

通过前面的学习&#xff08;前面没发过&#xff0c;因为其实就是跑它的demo&#xff09;了解到串口配置以及开启线程实现功能的工作流程&#xff0c;与此同时还有esp32作为STA节点&#xff0c;将数据通过http发送到服务器。 将这两者联合 其实是可以得到一个&#xff1a;esp32获…...

代购系统:架构设计、功能实现与用户界面优化

一、引言 随着全球化的加速&#xff0c;代购业务已成为电商领域的重要组成部分。代购系统不仅需要满足用户对商品的需求&#xff0c;还需提供高效、安全、便捷的购物体验。本文将从技术架构设计、功能实现、用户界面优化三个方面深入探讨代购系统的设计与实现。 二、技术架构…...

《一本书讲透Elasticsearch:原理、进阶与工程实践》读书笔记

1&#xff1a;es的组成部分&#xff1a; Elasticsearch 引擎&#xff1a;核心组件&#xff0c;处理索引和搜索请求 Kibana&#xff1a;es的可视化的数据界面&#xff0c;用于分析和展示数据 Beats&#xff08;可选&#xff09;轻量级的日志采集器 2&#xff1a;基本概念 es开…...

Android15查看函数调用关系

Android15 Camera3中打印函数调用栈 1.使用CallStack跟踪函数调用 修改涉及三个内容&#xff1a; Android.bp中添加对CallStack的引用。CallStack被打包在libutilscallstack.so。代码中包含CallStack的头文件。代码中调用CallStack接口&#xff0c;打印函数调用栈。 例子&am…...

Spring Boot(十七):集成和使用Redis

Redis(Remote Dictionary Server,远程字典服务器)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。Spring Boot 中集成和使用Redis主要涉及以下几个步骤: 添加依赖 在项目的pom.xml文件中添加Redis的依赖。Spring Boot提供了对Redis的集…...

macOS 15 通过 MacPorts 安装 PHP 7 构建错误找不到符号在 dns.o 中解决方法

构建遇到的问题如下&#xff1a; "_res_9_dn_expand", referenced from:_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_php_parserr in dns.o_zif_dns_get_mx in dns.o..."_res_9_dn_skipname&…...

练习:猜数字小游戏

需求&#xff1a; 程序自动生成一个 1 - 100 之间的随机数字&#xff0c;使用程序实现猜出这个数字是多少&#xff1f; 代码&#xff1a; //猜数字小游戏 package demo01; import java.util.Random; import java.util.Scanner; public class HelloJava {public static void …...

EMQX Dashboard

EMQX Dashboard EMQX理论基础 https://blog.csdn.net/liudachu/article/details/146495030 1 Dashboard简介 EMQX 提供了一个内置的管理控制台&#xff0c;即 EMQX Dashboard。方便用户通过 Web 页面就能轻松管理和监控 EMQX 集群&#xff0c;并配置和使用所需的各项功能。 访…...

PC名词解释-笔记本的S0,S1,S2,S3,S4,S5状态

​&#x1f393;作者简介&#xff1a;程序员转项目管理领域优质创作者 &#x1f48c;个人邮箱&#xff1a;[2707492172qq.com] &#x1f310;PMP资料导航&#xff1a;PM菜鸟&#xff08;查阅PMP大纲考点&#xff09; &#x1f4a1;座右铭&#xff1a;上善若水&#xff0c;水善利…...

uniapp自定义目录tree(支持多选、单选、父子联动、全选、取消、目录树过滤、异步懒加载节点、v-model)vue版本

先看案例&#xff1a; 效果&#xff1a; 数据结构如下&#xff1a; const themeList ref([{id: 1,name: 内蒙古,children: [{id: 3,name: 街道1,children: [{id: 4,name: 小区1}]}]},{id: 2,name: 北京,children: [{id: 6,name: 街道2}]} ]) 参数配置&#xff1a; 属性名类…...

【10】Strongswan collections —— array

//array 代码解释与测试 #include <stdio.h> #include <stdint.h> #include <stdlib.h> #include <string.h> #include <stdbool.h> #include <stdarg.h>#define INIT(this, ...) ({ (this) malloc(sizeof(*(this))); \*(this) (typeof…...