冗余连接II

本文参考代码随想录

在本问题中,有根树指满足以下条件的 有向 图。该树只有一个根节点,所有其他节点都是该根节点的后继。该树除了根节点之外的每一个节点都有且只有一个父节点,而根节点没有父节点。

输入一个有向图,该图由一个有着 n 个节点(节点值不重复,从 1 到 n)的树及一条附加的有向边构成。附加的边包含在 1 到 n 中的两个不同顶点间,这条附加的边不属于树中已存在的边。

结果图是一个以边组成的二维数组 edges 。 每个元素是一对 [ui, vi],用以表示 有向 图中连接顶点 ui 和顶点 vi 的边,其中 ui 是 vi 的一个父节点。

返回一条能删除的边,使得剩下的图是有 n 个节点的有根树。若有多个答案,返回最后出现在给定二维数组的答案。

思路

有如下三种情况,前两种情况是出现入度为2的点,

第三种情况是没有入度为2的点,那么图中一定出现了有向环

classSolution:definit(self,n):self.fathers=[iforiinrange(n+1)]deffind(self,u):ifself.fathers[u]==u:returnu self.fathers[u]=self.find(self.fathers[u])returnself.fathers[u]defisSame(self,u,v):returnself.find(u)==self.find(v)defjoin(self,u,v):# u -> vu=self.find(u)v=self.find(v)ifu==v:returnself.fathers[v]=udefisTreeAfterRemove(self,edge,edges):self.init(len(edges)+1)foreinedges:ife==edge:continueifself.isSame(e[0],e[1]):returnFalseself.join(e[0],e[1])returnTruedefremoveCircleEdge(self,edges):self.init(len(edges)+1)foreinedges:ifself.isSame(e[0],e[1]):returne self.join(e[0],e[1])deffindRedundantDirectedConnection(self,edges:List[List[int]])->List[int]:inDegrees=[0]*(len(edges)+1)twoDegreeVecs=[]foreinedges:inDegrees[e[1]]+=1foreinedges:ifinDegrees[e[1]]==2:twoDegreeVecs.append(e)iflen(twoDegreeVecs)>0:foreintwoDegreeVecs[::-1]:ifself.isTreeAfterRemove(e,edges):returnereturnself.removeCircleEdge(edges)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1156434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【毕业设计】SpringBoot+Vue+MySQL 游戏销售平台平台源码+数据库+论文+部署文档

💡实话实说:用最专业的技术、最实惠的价格、最真诚的态度服务大家。无论最终合作与否,咱们都是朋友,能帮的地方我绝不含糊。买卖不成仁义在,这就是我的做人原则。摘要 随着互联网技术的快速发展和数字娱乐产业的蓬勃兴…

SpringBoot+Vue 汽车票网上预订系统管理平台源码【适合毕设/课设/学习】Java+MySQL

💡实话实说: 有自己的项目库存,不需要找别人拿货再加价,所以能给到超低价格。 摘要 随着互联网技术的快速发展,传统汽车票销售模式已无法满足现代旅客的需求。线下购票存在排队时间长、信息不对称、票源紧张等问题&am…

LCD12864并行接口入门必看:初始化代码详解

从零点亮一块 LCD12864:并行接口初始化全解析你有没有遇到过这样的情况?电路接得整整齐齐,代码烧录成功,背光一亮,结果屏幕却“黑如墨、白如纸”——啥也不显示。反复检查引脚、重写初始化函数,还是没反应。…

虚拟串口配置入门必看:手把手搭建通信环境

虚拟串口配置实战指南:从零搭建高效通信链路 你有没有遇到过这样的场景? 手头没有目标硬件,但上位机程序已经写好了,急着要验证 Modbus 协议逻辑;或者 CI 测试流水线跑得好好的,却因为服务器没串口而卡住…

AI应用架构师从0到1:AI虚拟培训项目的团队协作与角色分工

AI应用架构师从0到1:AI虚拟培训项目的团队协作与角色分工 1. 引入与连接 1.1 引人入胜的开场 想象一下,在未来的职场中,新员工无需再在冗长的线下培训课堂中昏昏欲睡,而是戴上虚拟现实(VR)设备,瞬间置身于高度仿真的工作场景中,与栩栩如生的虚拟导师进行互动,接受定…

OTG连接键盘鼠标:提升移动办公效率

用一根线把手机变电脑:OTG连接键盘鼠标的实战全解析你有没有过这样的经历?在机场候机时突然要改一份PPT,手指在虚拟键盘上反复敲错字;或者用平板远程登录服务器,却因为没有鼠标而无法精准选中命令行。这些场景下&#…

最长递增子序列的个数

本文参考代码随想录 给定一个未排序的整数数组,找到最长递增子序列的个数。 示例 1: 输入: [1,3,5,4,7] 输出: 2 解释: 有两个最长递增子序列,分别是 [1, 3, 4, 7] 和[1, 3, 5, 7]。 示例 2: 输入: [2,2,2,2,2] 输出: 5 解释: 最长递增子序列的长度是…

【c++进阶】再谈虚函数

关注我,学习c不迷路: 个人主页:爱装代码的小瓶子 专栏如下: c学习Linux学习 后续会更新更多有趣的小知识,关注我带你遨游知识世界 期待你的关注。 文章目录深入探索C虚函数:从编译器视角看多态的“幕后魔法”1. 一…

I2C通信协议工业级设计要点:核心要点

工业级I2C通信设计实战:从信号完整性到系统容错的全链路优化 你有没有遇到过这样的场景? 一个本该稳定运行的工业传感器网络,突然开始频繁丢包;某台设备上的温度读数卡死不动,重启后又恢复正常;更糟的是&a…

Proteus 8.9环境搭建教程:全面讲解安装细节

从零搭建Proteus 8.9仿真环境:手把手带你避开每一个坑你是不是也曾在安装Proteus时被各种“找不到许可”、“服务无法启动”、“MCU不运行”的报错搞得焦头烂额?明明按照网上的教程一步步来,结果一打开软件就弹窗警告——别急,这并…

杰理芯片SDK开发-AD697N添加按键触摸提示音功能教程

前言 到现在为止也开发了许多杰理TWS蓝牙耳机项目SDK的案子,在调试案子时不断的向前辈们学习到了很多关于蓝牙TWS耳机专业的知识。想在这里做一个学习汇总,方便各位同行和对杰理芯片SDK感兴趣的小伙伴们学习; 本章详细讲解杰理AD697N芯片按键…

1.13草花互动面试

1. 浏览器输入网址到服务器的完整流程(从 DNS 解析到页面渲染)怎么答:“当我在浏览器输入一个网址(比如 https://www.example.com)并回车后,整个过程大致是这样的:DNS 解析:浏览器把…

Cortex-M ISR响应延迟优化完整示例

如何让 Cortex-M 的中断快到“无感”?——ISR 响应延迟优化实战全解析在嵌入式系统的世界里,“快”从来不是目的,而是生存的底线。你有没有遇到过这样的场景:电机控制环路突然失稳、音频播放咔哒作响、通信数据包莫名丢失……排查…

芯片验证工程师的写代码能力不是第一位

很多人以为验证工程师就是搭环境、跑仿真。但这只是表面工作。验证的核心在于发现问题,而不是证明设计正确。举个实际的例子:某个FIFO模块在正常读写测试下运行完美,覆盖率也达到了100%。但有个验证工程师在review代码时问了一句:…

IAR软件编译选项设置深度剖析与优化建议

深入IAR编译器:从配置到实战的性能调优全解析在嵌入式开发的世界里,一个常被忽视却至关重要的环节是——编译器不是“翻译机”,而是系统性能的塑造者。许多工程师习惯性地把代码写完后点击“Build”,看到绿色对勾就认为万事大吉。…

断言:让芯片设计工程师又爱又恨

断言(Assertion),说白了,它就是设计工程师在代码里埋下的一个个”判断点”,时刻监控着信号是不是符合预期。什么是断言?举个最简单的例子:assert property ((posedge clk) (req |-> ##[1:2] ack));这段代码的意思是…

JFlash烧录固件的完整指南与调试技巧

JFlash烧录实战:从连接失败到量产自动化的深度通关指南你有没有遇到过这样的场景?凌晨两点,产线停摆,几十块板子卡在“Cannot connect to target”的报错界面上;又或者,明明烧录成功了,程序却死…

尾调用搞懂了,JS性能直接起飞?前端人别再被面试官问懵了!

尾调用搞懂了,JS性能直接起飞?前端人别再被面试官问懵了!尾调用搞懂了,JS性能直接起飞?前端人别再被面试官问懵了!为啥每次面试都被问“尾调用优化”?尾调用到底是个啥玩意儿手把手看代码&#…

程序员如何在技术变革中保持竞争力

程序员如何在技术变革中保持竞争力 关键词:程序员、技术变革、竞争力、持续学习、技能多元化 摘要:随着科技的飞速发展,技术变革日新月异,程序员面临着前所未有的挑战。本文旨在探讨程序员在技术变革中保持竞争力的有效方法。通过对背景的介绍,明确了文章的目的、读者群体…

FileMasterPro v1.2.5:全能多功能文件管理工具

FileMasterPro v1.2.5 是专为 Windows 系统打造的专业文件管理工具,集成极速搜索、加密保险箱、智能整理、批量重命名及重复文件查重等核心功能,兼顾安全性与便捷性,轻松解决个人及办公场景中的海量文件管理难题。快速搜索与结果筛选作为高效…