AlgoPlus
v0.1.0
Loading...
Searching...
No Matches
src
algorithms
searching
dfs.h
1
#ifndef DFS_H
2
#define DFS_H
3
4
#ifdef __cplusplus
5
#include <stack>
6
#include <unordered_map>
7
#include <unordered_set>
8
#include <vector>
9
#endif
10
20
template
<
typename
T> T dfs(std::unordered_map<T, std::vector<T>>& adj, T start, T key) {
21
if
(adj.empty()) {
22
return
false
;
23
}
24
25
std::unordered_set<T> visited;
26
std::stack<T> s;
27
s.push(start);
28
while
(!s.empty()) {
29
auto
current = s.top();
30
s.pop();
31
if
(current == key) {
32
return
true
;
33
}
34
35
for
(T x : adj[current]) {
36
if
(visited.find(x) == visited.end()) {
37
visited.insert(x);
38
s.push(x);
39
}
40
}
41
}
42
return
false
;
43
}
44
45
#endif
Generated by
1.13.2