【代码随想录算法训练营第五十六天|卡码网98.所有可达路径】

文章目录

BFS和DFS的具体理论就看代码随想录了。 DFS BFS

卡码网98.所有可达路径

深度优先某种程度上和回溯真的一模一样,先进行终止条件判断,然后进入当前结点的遍历,满足条件进行操作后进入下一步的递归,最后回溯。

python 复制代码
ans = []
def dfs(root, Nodes, pre, target):
    if root == target:
        ans.append(pre[:])
        return 
    for j in range(1, target+1):
        if Nodes[root-1][j-1]:
            pre.append(j)
            dfs(j, Nodes, pre, target)
            pre.pop()
        
if __name__ == '__main__':
    NM = input().split()
    N, M = int(NM[0]), int(NM[1])
    ss, ts = [], []
    for i in range(M):
        st = input().split()
        s, t = int(st[0]), int(st[1])
        ss.append(s)
        ts.append(t)
    Nodes = [[False] * N for _ in range(N)]
    for i, j in zip(ss, ts):
        Nodes[i-1][j-1] = True
    dfs(1, Nodes, [1], N)
    if len(ans) == 0:
        print(-1)
    else:
        for result in ans:
            print(' '.join(map(str, result)))
相关推荐
怎么没有名字注册了啊1 小时前
求一个矩阵中的鞍点
数据结构·算法
Greedy Alg1 小时前
LeetCode 74. 搜索二维矩阵
算法
小猪咪piggy1 小时前
【算法】day7 滑动窗口+二分查找
算法
仟千意1 小时前
数据结构:二叉树
数据结构·算法
一水鉴天2 小时前
整体设计 逻辑系统程序 之34七层网络的中台架构设计及链路对应讨论(含 CFR 规则与理 / 事代理界定)
人工智能·算法·公共逻辑
DuHz2 小时前
C程序中的数组与指针共生关系
linux·c语言·开发语言·嵌入式硬件·算法
而后笑面对2 小时前
力扣2025.10.19每日一题
算法·leetcode·职场和发展
·白小白2 小时前
力扣(LeetCode) ——11.盛水最多的容器(C++)
c++·算法·leetcode
沐浴露z4 小时前
【JVM】详解 垃圾回收
java·jvm·算法
代码欢乐豆4 小时前
编译原理机测客观题(7)优化和代码生成练习题
数据结构·算法·编译原理