代码随想录算法训练营 Day 43

less than 1 minute read

Published:

图论中的概念

无向图中每个节点所连接的边的数量,而有向图中还可分为出度和入度

出度:以该节点作为起始节点的路径数量 入度:以该节点作为终止节点的路径数量

连通性

无向图中任意两个节点之间都有一条路径可达,则称之为连通图

有向图中任意两个节点之间都有一条路径可刀,则称之为强连通图

(强)连通分量

一个极大的(强)连通子图被称为一个(强)连通分量

Q1. KamaCoder 98

from collections import defaultdict

res = []

def dfs(node, path):
    if node == n:
        res.append(path[:])
        return
    
    for neigh in edge[node]:
        if neigh in path:
            continue
        path.append(neigh)
        dfs(neigh, path)
        path.pop()

if __name__ == '__main__':
    n, m = map(int, input().split())
    edge = defaultdict(list)
    
    for _ in range(m):
        n1, n2 = map(int, input().split())
        edge[n1].append(n2)


    dfs(1, [1])
    if not res:
        print(-1)
    
    for p in res:
        print(' '.join(map(str, p)))

广度优先搜索

适合于找最短路径类似的问题