//图算法 - 深度优先搜索(DFS) 题目:给定一个无向图,通过深度优先搜索算法找到从指定顶点开始的所有连通顶点。 问题函数定义:
//cpp
//void dfs(vector<vector<int>>&graph, vector<bool>&visited, int start) {
// // 函数实现
//}
//裁判测试程序样例:
//
//cpp
#include <iostream>
#include <vector>
using namespace std;
void dfs(vector<vector<int>>& graph, vector<bool>& visited, int start) {
visited[start] = true;
cout << start << " ";
for (auto a : graph[start]) {
if (!visited[a]) {
dfs(graph, visited, a);
}
}
}
void dfsTest(vector<vector<int>>& graph, int start) {
vector<bool> visited(graph.size(), false);
dfs(graph, visited, start);
cout << endl;
}
int main() {
vector<vector<int>> graph = {
{1, 2},
{0, 2, 3},
{0, 1, 4},
{1, 4},
{2, 3}
};
int start = 0;
dfsTest(graph, start);
return 0;
}
//输入样例:(图的邻接表表示)
//
//[[1, 2], [0, 2, 3], [0, 1, 4], [1, 4], [2, 3]]
//0
//输出样例:(打印访问顺序)
//
//0 1 2 4 3