【代码随想录算法训练营第五十六天|卡码网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)))
相关推荐
星释17 小时前
Rust 练习册 :Pythagorean Triplet与数学算法
开发语言·算法·rust
星释17 小时前
Rust 练习册 :Nth Prime与素数算法
开发语言·算法·rust
多喝开水少熬夜18 小时前
Trie树相关算法题java实现
java·开发语言·算法
WBluuue18 小时前
数据结构与算法:树上倍增与LCA
数据结构·c++·算法
bruk_spp18 小时前
牛客网华为在线编程题
算法
黑屋里的马20 小时前
java的设计模式之桥接模式(Bridge)
java·算法·桥接模式
sin_hielo20 小时前
leetcode 1611
算法·leetcode
李小白杂货铺20 小时前
识别和破除信息茧房
算法·信息茧房·识别信息茧房·破除信息茧房·算法推荐型茧房·观点过滤型茧房·茧房
来荔枝一大筐21 小时前
C++ LeetCode 力扣刷题 541. 反转字符串 II
c++·算法·leetcode
暴风鱼划水21 小时前
算法题(Python)数组篇 | 6.区间和
python·算法·数组·区间和