day50 第十一章:图论part01

ACM模式,自己控制输入输出

图论理论基础

连通性:

连通图(无向),强连通图(有向)----- 任意两个节点之间都可相互到达

连通分量(极大连通子图),强连通分量

图的构造:

邻接矩阵

优点:

表达简单

易于查找任意2个顶点之间的连接

适合稠密图

缺点:

n*n,不适合稀疏图

邻接表

优点:

空间利用率高

缺点:

不好搜索任意2点之间是否存在

回溯就是深度优先搜索

邻接表和邻接矩阵dfs写法上没有太大差异

深搜理论基础

98. 所有可达路径

邻接矩阵:n*n的矩阵

python 复制代码
def main():
    n, m = map(int, input().split())
    graph = [[0]*(n+1) for _ in range(n+1)]
     
    for i in range(m):
        s, t = map(int, input().split())
        graph[s][t] = 1
     
    result = []
    path = [1]
    dfs(graph, 1, n, path, result)
     
    if not result:
        print(-1)
    else:
        for path in result:
            print(' '.join(map(str, path)))
     
     
def dfs(graph, x, n, path, result):
    if x==n:
        result.append(path.copy())
        return
    for i in range(1, n+1):
        if graph[x][i] == 1:
            path.append(i)
            dfs(graph, i, n, path, result)
            path.pop()
     
if __name__ == "__main__":
    main()

邻接表:defaultdict

python 复制代码
from collections import defaultdict

def main():
    n, m = map(int, input().split())
    graph = defaultdict(list)
    
    for i in range(m):
        s, t = map(int, input().split())
        graph[s].append(t)
    
    result = []
    path = [1]
    dfs(graph, 1, n, path, result)
    
    if not result:
        print(-1)
    else:
        for path in result:
            print(' '.join(map(str, path)))
    
def dfs(graph, x, n, path, result):
    if x == n:
        result.append(path.copy())
        return
    for i in graph[x]:
        # if graph[x][i] == 1:
        path.append(i)
        dfs(graph, i, n, path, result)
        path.pop()
    
if __name__ == "__main__":
    main()
    

广搜理论基础

相关推荐
双人徐木子李4 小时前
组队(蓝桥杯19A)
蓝桥杯·深度优先·图论
Yoyo25年秋招冲冲冲1 天前
Day59_20250207_图论part4_110.字符串接龙|105.有向图的完全可达性|106.岛屿的周长
java·开发语言·数据结构·笔记·算法·动态规划·图论
Yoyo25年秋招冲冲冲1 天前
Day56_20250204_图论part1_图论理论基础|深搜理论基础|98.所有可达路径|广搜理论基础
java·算法·leetcode·深度优先·动态规划·图论
暮雨哀尘1 天前
蓝桥杯C语言组:图论问题
c语言·c++·算法·蓝桥杯·图论·生成树
Yoyo25年秋招冲冲冲1 天前
Day58_20250206_图论part3_101.孤岛的总面积|102.沉没孤岛|103.水流问题|104.建造最大岛屿
java·数据结构·算法·leetcode·深度优先·动态规划·图论
左灯右行的爱情2 天前
图论——并查集
图论
左灯右行的爱情3 天前
图论——环检测
图论
qystca3 天前
链式前向星复习图论
算法·深度优先·图论
m0_dawn4 天前
(算法竞赛)图论+DFS深搜——图的dfs遍历1
python·算法·蓝桥杯·深度优先·图论