网站做301有什么用,天水市建设局网站吊篮管理通知,国家信用信息企业公示系统官网,新乡搜狗网站推广工具参考题目#xff1a;所有可达路径
题目描述 给定一个有 n 个节点的有向无环图#xff0c;节点编号从 1 到 n。请编写一个函数#xff0c;找出并返回所有从节点 1 到节点 n 的路径。每条路径应以节点编号的列表形式表示。
输入描述
第一行包含两个整数 N#xff0c;M所有可达路径
题目描述 给定一个有 n 个节点的有向无环图节点编号从 1 到 n。请编写一个函数找出并返回所有从节点 1 到节点 n 的路径。每条路径应以节点编号的列表形式表示。
输入描述
第一行包含两个整数 NM表示图中拥有 N 个节点M 条边
后续 M 行每行包含两个整数 s 和 t表示图中的 s 节点与 t 节点中有一条路径
输出描述
输出所有的可达路径路径中所有节点之间空格隔开每条路径独占一行存在多条路径路径输出的顺序可任意。如果不存在任何一条路径则输出 -1。
注意输出的序列中最后一个节点后面没有空格 例如正确的答案是 1 3 5,而不是 1 3 5 5后面没有空格
输入示例
5 5
1 3
3 5
1 2
2 4
4 5
输出示例
1 3 5
1 2 4 5提示信息 用例解释
有五个节点其中的从 1 到达 5 的路径有两个分别是 1 - 3 - 5 和 1 - 2 - 4 - 5。
因为拥有多条路径所以输出结果为
1 3 5 1 2 4 5
或
1 2 4 5 1 3 5 都算正确。 数据范围
图中不存在自环图中不存在平行边1 N 1001 M 500
问题分析这个很明细使用的是dfs深度优先搜索的框架代码什么叫做深度优先搜索算法呢就是一路走到底直到无路可走的时候就回退寻找其它的出路存储的数据结构可以使用邻接表、邻接矩阵的等等如果还是不太理解代码随想录 n, m map(int, input().split())
Map [[] for _ in range(n 1)]for _ in range(m):a, b map(int, input().split())Map[a].append(b)
stack []
ans []
def dfs(start, target):stack.append(start)if start target:ans.append(stack[:])else:for next in Map[start]:dfs(next, target)stack.pop()
dfs(1, n)
if len(ans):for path in ans:path_len len(path)for i in range(path_len):if i ! path_len - 1: # 换不换行print(f{path[i]} , end)else:print(f{path[i]})
else:print(-1)