【代码随想录算法训练营第五十六天|卡码网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)))
相关推荐
羊小猪~~3 分钟前
【论文精度】Transformer---大模型基石
人工智能·深度学习·考研·算法·机器学习·transformer
西西弟16 分钟前
常见排序算法集合(数据结构)
数据结构·算法·排序算法
Yzzz-F21 分钟前
[模板]Nim博弈
算法
小龙报22 分钟前
【数据结构与算法】栈和队列的综合应用:1.用栈实现队列 2.用队列实现栈 3.设计循环队列
c语言·数据结构·数据库·c++·redis·算法·缓存
重生之我是Java开发战士28 分钟前
【广度优先搜索】队列:N叉树的层序遍历,二叉树的锯齿形层序遍历,二叉树的最大宽度,在每个树行中找最大值
数据结构·算法·leetcode·广度优先
qq_4160187239 分钟前
移动平台C++开发指南
开发语言·c++·算法
王璐WL1 小时前
【C++】string的经典算法题
开发语言·c++·算法
闻缺陷则喜何志丹1 小时前
【动态规划】P8591 『JROI-8』颅脑损伤 2.0|普及+
c++·算法·动态规划·洛谷
阿贵---1 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
倾心琴心1 小时前
【agent辅助pcb routing coding学习】实践7 length matching 算法学习
学习·算法·agent·pcb·routing