返回主页

图的邻接表 DFS 搜索模板

DFS 搜索无权图中从起点到终点的简单路径数量(邻接表)

算法模板发布于 2026/08/22编辑于 2026/08/23#图#dfs#邻接表
C++35 行711 Bytes
下载文件
#include <bits/stdc++.h>
using namespace std;

const int N = 1005;              // 根据题目点的数量范围调整
vector<int> adj[N];              // 邻接表(有权图需要使用结构体)
bool vis[N];
int step[N];
int n, m, st, ed, cnt;

void dfs(int u) {
    if (u == ed) { cnt++; return; }  // 到终点
    for (int v: adj[u]) {
        if (vis[v]) continue;
        vis[v] = 1;
        dfs(v);
        vis[v] = 0;
    }
}

int main() {
    
    cin >> n >> m >> st >> ed;
    while (m--) {
        int u, v;
        cin >> u >> v;
        adj[u].push_back(v);
		// 无向图需要反向边
		// adj[v].push_back(u);    
    }
    vis[st] = 1;
    dfs(st);
    cout << cnt;
    
    return 0;
}