1 solutions
-
0
思路
树上dfs/bfs
题意化简:给定一棵树,其中有些点无法访问。需要找一条从根节点到叶子结点的路径,要求满足长度最短且字典序最小。
做法1:dfs
1.数据结构选择:
使用邻接表来表示树的结构,其中每个节点连接的路口作为其邻居。
2.输入处理:
读取城市的路口数、道路数及其连接信息,构建树的邻接表。 读取堵车路口的信息,并使用一个布尔数组标记这些堵车路口。
3.深度优先搜索(DFS):
从根节点开始进行 DFS,寻找所有可能的出城口(叶子节点)。 在 DFS 的过程中,忽略被堵车的路口。 对于每次到达叶子节点,记录当前路径并更新最优路径(经过路口最少且字典序最小)。
4。路径记录和输出:
如果找到有效的出城路径,输出该路径;如果没有找到,则输出“NULL”。
做法2:bfs
由于要满足长度最短,所以想到bfs也是比较自然的。对于字典序最小的性质,我们只需要对同一层的结点编号进行升序排序即可。复杂度
代码说明
1.输入读取:
读取节点数和边数,构建树的邻接表。 读取堵车路口并进行标记。
2.DFS 初始化:
使用一个数组记录当前路径。 使用一个布尔数组标记已经访问的节点。
3.DFS 遍历:
对当前节点进行遍历,检查邻接节点。 如果邻接节点没有堵车且没有被访问,继续深入 DFS。 如果到达叶子节点,记录当前路径并更新最优路径。
4.输出结果:
如果找到路径,格式化并输出路径;否则,输出“NULL”。
代码
以下皆为做法。做法见题解区
CPP
python
Java
Go
Js
- 1
Information
- ID
- 9
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 7
- Tags
- # Submissions
- 155
- Accepted
- 38
- Uploaded By