也是图的遍历方式之一
实现比BFS简单,只需要递归该节点每一个可到达的节点即可
代码实例:
存储形式为
map<string,set<string>> m
其中map<节点,set<节点可到达的节点>> m
void DFS(map<string,set<string>> m,string point)
{
for(auto elem : m[point])
{
if(check.find(elem) == check.end())
{
check.insert(elem);
DFS(m,elem);
}
}
}
总代码:
#include <bits/stdc++.h>
using namespace std;
string begin = "A";
set<string> check;
void DFS(map<string,set<string>> m,string point)
{
for(auto elem : m[point])
{
if(check.find(elem) == check.end())
{
check.insert(elem);
DFS(m,elem);
}
}
}
int main()
{
map<string,set<string>> m;
for(int i = 0;i < 10;++i)
{
string x,y;
cin >> x >> y;
m[x].insert(y);
m[y].insert(x);
}
check.insert(::begin);
DFS(m,::begin);
return 0;
}
/*
A B
A D
A E
B D
D E
B C
E C
E F
E G
F G
*/