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






代码
python
#98.所有可达路径
#邻接矩阵法
result = []
path = []
def dfs(graph, cur, n):
if cur == n:
result.append(path.copy())
return
for 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] = 1
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])
#邻接表法
from collections import defaultdict
result = []
path = []
def dfs(graph, cur, n):
if cur == n:
result.append(path.copy())
return
for 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])