#include<iostream>
#include<vector>
int start, end; // 假设我们已经有了两点,分别设其为起、终点
vector<int> tempPath;
vector< vector<int> > allPaths,
void DFS(int u) {
if(u == end) {
tempPath.push_back(u);
allPaths.push_back(tempPath); // 获得了一条路径
tempPath.pop_back();
}
visited[u] = true;
tempPath.push_back(u); // 保存路径
for(...) {
int v = 邻接点;
DFS(v);
}
// 回溯时要pop掉当前点并取消访问标记,就能
tempPath.pop_back();
visited[u] = false; /* 最重要的一句,取消访问标记
(不然在寻找更多的路径的时候有的点会显示已访问而无法找到所有路径) */
}
int main() {
DFS(start);
}
使用DFS深度优先搜索获取图中两点的所有路径的模板
最新推荐文章于 2022-05-08 15:57:30 发布