【代码随想录算法训练营——Day50(Day49周日休息)】图论——98.所有可达路径
卡码网题目链接
https://kamacoder.com/problempage.php?pid=1170
题解
98.所有可达路径
想套用深搜或广搜的代码模板。看了一下题解的开头给了一点提示,要用深搜的模板。写了一个充满不确定性的dfs代码,让deepseek过目了一下,改了很多地方,因为是照着我的代码改的,所以改的也不对,原因如下。再看看题解。看了题解,感觉好简单,但自己写的时候就缺乏很多细节。






代码
#98.所有可达路径
#邻接矩阵法
result = []
path = []
def dfs(graph, cur, n):if cur == n:result.append(path.copy())returnfor i in range(1, n + 1):if graph[cur][i] == 1:path.append(i)dfs(graph, i, n)path.pop()if __name__ == "__main__":n, m = map(int, input().split())graph = [[0] * (n + 1) for _ in range(n + 1)]for i in range(m):start, end = map(int, input().split())graph[start][end] = 1path.append(1)dfs(graph, 1, n)if len(result) == 0:print("-1")for i in range(len(result)):for j in range(len(result[i]) - 1):print(f"{result[i][j]} ", end = '')print(result[i][len(result[i]) - 1])#邻接表法
from collections import defaultdictresult = []
path = []
def dfs(graph, cur, n):if cur == n:result.append(path.copy())returnfor i in range(1, n + 1):if i in graph[cur]:path.append(i)dfs(graph, i, n)path.pop()if __name__ == "__main__":n, m = map(int, input().split())graph = defaultdict(list)for i in range(m):start, end = map(int, input().split())graph[start].append(end)path.append(1)dfs(graph, 1, n)if len(result) == 0:print("-1")for i in range(len(result)):for j in range(len(result[i]) - 1):print(f"{result[i][j]} ", end = '')print(result[i][len(result[i]) - 1])
