3
unordered_map<int, vector<int>> adj;4
unordered_map<int, bool> visited;6
bool dfs(int node, int destination) {8
for (auto neighbour : adj[node]) {9
if (!visited[neighbour]) {10
if (neighbour == destination) return true;11
if (dfs(neighbour, destination)) return true;18
bool validPath(int n, vector<vector<int>> &edges, int source, int destination) {19
if (source == destination) return true;21
for (auto edge : edges) {22
adj[edge[0]].push_back(edge[1]);23
adj[edge[1]].push_back(edge[0]);25
return dfs(source, destination);