原题链接
#include <bits/stdc++.h>
using namespace std;
vector<int> v[111111];
int vis[111111];
int f;
void dfs(int x, int y)
{
if (y >= 4)
return;
vis[x] = 1;
for (int i = 0; i < v[x].size(); i++)
{
if (vis[v[x][i]])
f = 1;
else
{
dfs(v[x][i], y + 1);
vis[v[x][i]] = 1;
}
}
}
int main()
{
int n;
cin >> n;
int num, num1, num2;
char c;
char sex[111111];
for (int i = 0; i < n; i++)
{
cin >> num >> c >> num1 >> num2;
sex[num] = c;
sex[num1] = 'M';
sex[num2] = 'F';
if (num1 != -1)
v[num].push_back(num1);
if (num2 != -1)
v[num].push_back(num2);
}
int k, a, b;
cin >> k;
for (int i = 0; i < k; i++)
{
f=0;
memset(vis, 0, sizeof(vis));
cin >> a >> b;
if (sex[a] == sex[b])
cout << "Never Mind" << endl;
else
{
vis[a] = 1;
vis[b] = 1;
dfs(a, 0);
dfs(b, 0);
if (f)
cout<<"No"<<endl;
else
{
cout<<"Yes"<<endl;
}
}
}
}