🗒️2360. 图中的最长环
2025-1-10
| 2025-1-10
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Jan 10, 2025 02:10 AM
给你一个 n 个节点的 有向图 ,节点编号为 0 到 n - 1 ,其中每个节点 至多 有一条出边。
图用一个大小为 n 下标从 0 开始的数组 edges 表示,节点 i 到节点 edges[i] 之间有一条有向边。如果节点 i 没有出边,那么 edges[i] == -1 。
请你返回图中的 最长 环,如果没有任何环,请返回 -1 。
一个环指的是起点和终点是 同一个 节点的路径。

基环树

对基环树的理解出现了错误,认为题中中有且只有一个环。——❌
💡
在基环树中有且只有一个环。但是按照题目中的构造,不一定只构造一个基环树,构造的是基环森林。需要考虑联通不连通。
考虑到了多个基环树的情况——超时了❌
上述,每一个循环都是从头开始遍历,没有考虑到已经访问的点。在环中,如果一个点访问了,环中的所有点都会被访问到,这里导致了访问的重复,增加了时间负载度。因此,我们利用 dist 数组访问过后,与初始值的不一致的特点,来判断有没有访问。但是下面在计算 ans = max(d - dist[x], ans); 这里存在问题。这里没有区别是第几次访问到环。第二次之后访问环的话,会导致结果偏大。——❌
经过分析,问题出现在计算环长度那里,我们需要区分,第一次访问到这个环还是多次访问环。设置标志位,标识这次访问的开始。——✅
或者这样写——✅

📎 参考

  • 【题单】图论算法
  • 684. 冗余连接2359. 找到离给定两个节点最近的节点
    Loading...