L2-016 愿天下有情人都是失散多年的兄妹 (25分)

    科技2022-07-15  117

    #include <bits/stdc++.h> using namespace std; const int maxn = 1e5+5; vector<int> vec[maxn]; bool vis[maxn]; char sex[maxn]; bool flag; void dfs(int x,int num){ if(num>=4) return; for(int i=0;i<vec[x].size();i++){ if(!vis[vec[x][i]]){ vis[vec[x][i]]=1;//标记出现的人 dfs(vec[x][i],num+1); } else flag=1; } } int T; int main(){ //freopen("in","r",stdin); cin>>T; while(T--){ int t,fa,ma; scanf("%d ",&t); sex[t]=getchar(); scanf(" %d %d",&fa,&ma); if(fa!=-1){ vec[t].push_back(fa); sex[fa]='M'; } if(ma!=-1){ vec[t].push_back(ma); sex[ma]='F'; } } cin>>T; while(T--){ int x,y; scanf("%d %d",&x,&y); if(sex[x]==sex[y]) cout<<"Never Mind"<<endl; else{ memset(vis,0,sizeof(vis)); vis[x]=1;vis[y]=1; flag=0; dfs(x,0);dfs(y,0); if(flag) cout<<"No"<<endl; else cout<<"Yes"<<endl; } } return 0; }
    Processed: 0.010, SQL: 8