news 2026/5/30 12:05:01

更弱智的算法学习 day56

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
更弱智的算法学习 day56

使用并查集遍历所有边。当遇到一条边连接的两个节点已经属于同一连通分量时,这条边就是冗余边(因为它会形成环)。由于代码按输入顺序遍历边,最后记录的冗余边即为输入中最后出现的。

  • 遍历每条边时,若st已连通(is_same(s, t)True),说明添加该边会形成环,因此记录为result。由于继续遍历后续边,result会被更新,最终保留的是最后一条导致环的边,符合题目要求。若非冗余边,则调用join(s, t)合并集合,维护连通性。
  • 输出​:打印最后记录的冗余边。

father = list() def find(u): if u == father[u]: return u else: father[u] = find(father[u]) return father[u] def is_same(u, v): u = find(u) v = find(v) return u == v def join(u, v): u = find(u) v = find(v) if u != v: father[u] = v if __name__ == "__main__": # 輸入 n = int(input()) for i in range(n + 1): father.append(i) # 尋找冗余邊 result = None for i in range(n): s, t = map(int, input().split()) if is_same(s, t): result = str(s) + ' ' + str(t) else: join(s, t) # 輸出 print(result)

from collections import defaultdict father = list() def find(u): if u == father[u]: return u else: father[u] = find(father[u]) return father[u] def is_same(u, v): u = find(u) v = find(v) return u == v def join(u, v): u = find(u) v = find(v) if u != v: father[u] = v def is_tree_after_remove_edge(edges, edge, n): # 初始化并查集 global father father = [i for i in range(n + 1)] for i in range(len(edges)): if i == edge: continue s, t = edges[i] if is_same(s, t): # 成環,即不是有向樹 return False else: # 將s,t放入集合中 join(s, t) return True def get_remove_edge(edges): # 初始化并查集 global father father = [i for i in range(n + 1)] for s, t in edges: if is_same(s, t): print(s, t) return else: join(s, t) if __name__ == "__main__": # 輸入 n = int(input()) edges = list() in_degree = defaultdict(int) for i in range(n): s, t = map(int, input().split()) in_degree[t] += 1 edges.append([s, t]) # 尋找入度為2的邊,並紀錄其下標(index) vec = list() for i in range(n - 1, -1, -1): if in_degree[edges[i][1]] == 2: vec.append(i) # 輸出 if len(vec) > 0: # 情況一:刪除輸出順序靠後的邊 if is_tree_after_remove_edge(edges, vec[0], n): print(edges[vec[0]][0], edges[vec[0]][1]) # 情況二:只能刪除特定的邊 else: print(edges[vec[1]][0], edges[vec[1]][1]) else: # 情況三: 原圖有環 get_remove_edge(edges)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/29 2:31:34

springboot企业进销存管理系统演vue论文

目录摘要内容框架技术实现要点系统创新点应用价值开发技术源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要内容框架 基于SpringBoot和Vue的企业进销存管理系统研究 该系统采用前后端分离架构,后端基于SpringBoot框架实现…

作者头像 李华
网站建设 2026/5/29 0:55:47

网工毕设容易的题目分享

1 引言 毕业设计是大家学习生涯的最重要的里程碑,它不仅是对四年所学知识的综合运用,更是展示个人技术能力和创新思维的重要过程。选择一个合适的毕业设计题目至关重要,它应该既能体现你的专业能力,又能满足实际应用需求&#xf…

作者头像 李华
网站建设 2026/5/29 0:14:32

高级网络爬虫实战:动态渲染、反爬对抗与分布式架构

在当今数据驱动的时代,网络爬虫已成为获取公开信息的重要工具。然而,随着网站防护机制的不断升级,传统基于静态 HTML 解析的爬虫已难以应对复杂的现实场景。本文将深入探讨现代爬虫开发中的三大核心挑战:动态内容渲染、反爬机制绕…

作者头像 李华
网站建设 2026/5/28 14:17:55

AI 的逐步进化:从被动的“思考者”到主动的“行动者”

你输入问题,它给出答案。这种交互模式已经很有用了,但也仅此而已,现在的AI的使用方式跟GPT3.5刚出来的时候已经完全不一样了,无论是dify、coze这些平台,还是Codex、Claude Code等开发者工具,都在以不一样的…

作者头像 李华
网站建设 2026/5/28 18:33:47

城市规划新方法:用照片to谷歌地球构建三维现状调研

城市规划师的日常困境 作为一名城市规划师,我的工作涉及城市更新、片区规划、交通优化等多个领域。从业十年来,我参与了超过50个城市规划项目,足迹遍布全国20多个城市。 在城市规划工作中,现状调研是最基础也是最重要的环节。我们…

作者头像 李华
网站建设 2026/5/31 0:21:00

车载USB端口ESD管耐温与防护难两全?

车载USB端口面临极端温度环境(-40C ~ 125C)与强ESD防护的双重需求。本文从热学、电学、可靠性等角度,深入分析温度与防护性能的矛盾,以及工程解决方案。 一、车载环境的严苛要求 车载电子系统面临独特的环境与可靠性挑战&#xff…

作者头像 李华