重练算法(代码随想录版) day50 - 图论part1

今日刷题量:2
当前刷题总量:175
Easy: 63
Mid: 100
Hard: 12

Day50
基础理论
图论基础

  • 图 = 顶点 + 边
  • 分类:有向图、无向图、有环图、无环图、带权图、非带权图
  • 存储方式:邻接表 vs 邻接矩阵

DFS即一条路走到头,走不通再回头

  • 典型问题:枚举所有可能、路径问题、回溯问题
  • 代码框架:
点击查看代码
void dfs(int u) {
    visited[u] = true;
    for (int v : graph[u]) {
        if (!visited[v]) {
            dfs(v);
        }
    }
}

BFS即一层一层向外扩撒

  • 典型问题:最短路径、最少步数、层序问题
  • 代码框架:
点击查看代码
queue<int> q;
q.push(start);
visited[start] = true;

while (!q.empty()) {
    int u = q.front(); q.pop();
    for (int v : graph[u]) {
        if (!visited[v]) {
            visited[v] = true;
            q.push(v);
        }
    }
}

常用思想及练习题目
797.所有可能的路径(mid):https://leetcode.cn/problems/all-paths-from-source-to-target/
98.可达路径(mid):https://kamacoder.com/problempage.php?pid=1170

posted @ 2025-12-25 00:12  GengarF  阅读(0)  评论(0)    收藏  举报