class Solution {
public:
bool validPath(int n, vector<vector<int>>& edges, int source, int destination) {
unordered_map<int, set<int>>m;
vector<bool> visited(n, false);
visited[destination]=0;
for(int i=0;i<edges.size();i++)
{
int u=edges[i][0];
int v=edges[i][1];
m[u].insert(v);
m[v].insert(u);
}
queue<int>q;
q.push(source);
visited[source]=true;
while(!q.empty())
{
int p=q.front();
q.pop();
for(auto x:m[p])
{
if(!visited[x])
{
q.push(x);
visited[x]=true;
}
}
}
if(visited[destination]==1) return true;
return false;
}
};