AlgoPlus v0.1.0
Loading...
Searching...
No Matches
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
20template <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