代码随想录算法训练营DAY56|图论理论基础、98. 所有可达路径、深搜广搜基础

图论理论基础

  • 强连通图是在有向图中任何两个节点是可以相互到达
  • 在无向图中的极大连通子图称之为该图的一个连通分量。

98. 所有可达路径

def dfs(graph, a, n, path, result):
    if a==n-1:
        result.append((' ').join(path[:]))
        
    for j in range(N):
        if graph[a][j]:
            path.append(str(j+1))
            dfs(graph, j, n, path, result)
            path.pop()
    
    return result

if __name__=='__main__':
    N, M = map(int, input().split())
    graph = [[0]*N for _ in range(N)]
    for i in range(N):
        a, b = map(int, input().split())
        graph[a-1][b-1]= 1
    path = [str(1)]
    result = []
    
    result = dfs(graph, 0, N, path, result)
    
    print('\n'.join(result))

你可能感兴趣的:(代码随想录打卡,算法,图论)