7#include <unordered_map>
8#include <unordered_set>
21template <
typename T>
bool bfs(std::unordered_map<T, std::vector<T>>& adj, T start, T key) {
22 std::unordered_set<T> visited;
25 visited.insert(start);
29 }
else if (start == key)
33 int64_t size = q.size();
34 for (int64_t i = 0; i < size; i++) {
35 auto current = q.front();
40 for (T x : adj[current]) {
41 if (visited.find(x) == visited.end()) {