int Solution::solve(int A, vector<vector > &B) {
map<int,vector>m;
for(int i=0;i<B.size();i++)
{
m[B[i][0]].push_back(B[i][1]);
m[B[i][1]].push_back(B[i][0]);
}
map<int,int> parent;
map<int,bool> visited;
queue<int> q;
q.push(B[0][0]);
visited[B[0][0]]=true;
parent[B[0][0]]=B[0][0];
while(!q.empty())
{
int top=q.front();
q.pop();
for(int i: m[top])
{
if((visited[i]==true)&&(parent[top]!=i)){
return true;
}
else if(visited[i]!=true)
{
visited[i]=true;
parent[i]=top;
q.push(i);
}
}
}
return false;
}