2023 2023 Leetcode Cup Graph Theory List
2022年(上)
2368. 受限条件下可到达节点的数目 Rank:1477

方法一:DFS
Map建图+dfs
1 | |
2385. 感染二叉树需要的总时间 Rank:1711

方法一:DFS + BFS
- 每遍历一层,秒数加一
- res初始化为-1,因为如果只有一个节点,答案是0秒,即不需要扩散
1 | |
2359. 找到离给定两个节点最近的节点 Rank:1715

方法一:内向基环树
1 | |
2360. 图中的最长环 Rank:1897
方法一:时间戳
也是内向基环树
1 | |
2467. 树上最大得分和路径 Rank:2053


方法一:时间戳 + 两次dfs
- 先dfs一次bob的路径,只有找到0的最短路径的节点用时间戳记录
- 根据规则再对alice路径dfs
1 | |
2022年(下)
2641. 二叉树的堂兄弟节点 II Rank:1677

方法一:双BFS(双链表实现)
类似换根DP
- 首先算出下一层的节点值总和
- 再遍历一次当前层,给孩子节点赋值(如果用queue来遍历,无法重复遍历这一次,还需要用数组记录每一层的和)
1 | |
2684. Maximum Number of Moves in a Grid Rank:1626

方法一:BFS
注意用visited数组剪枝
1 | |
方法二:记忆化搜索
和半年前的提交完全一样!一个字母都不差,属实是肌肉记忆了
1 | |
2685. Count the Number of Complete Components

方法一:DFS
- 遍历每个连通分量,将edge数加上当前节点的邻居数,最后这个连通分量的边会被计算两次
- 如果是完全连通分量,e = (v - 1) * v / 2
- 由于这里边计算了两次,如果e = (v - 1) * v,那么是完全连通分量
1 | |
2642. Design Graph With Shortest Path Calculator Rank:1811


方法一:Dijkstra
1 | |
方法二:堆优化
1 | |
2608. Shortest Cycle in a Graph Rank:1904

方法一:BFS

问:为什么说发现一个已经入队的点,就说明有环?
答:这说明到同一个点有两条不同的路径,这两条路径组成了一个环。
1 | |
2577. Minimum Time to Visit a Cell In a Grid Rank:2356

方法一:堆优化dijkstra
1 | |
方法二:二分 + BFS
1 | |
2812. 找出最安全路径 Rank:2154

方法一:多源BFS + 二分
1 | |
2023 2023 Leetcode Cup Graph Theory List
https://leopol1d.github.io/2024/01/14/2023-2023-Leetcode-Cup-Graph-Theory-List/