0
点赞
收藏
分享

微信扫一扫

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

醉东枫 2022-03-30 阅读 40
算法

在这里插入图片描述

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <set>
#include <vector>
#include <functional>
using namespace std;
struct Person
{
	char sex;
	int fa,ma;
}p[100010];
signed main()
{
	int n;cin>>n;
	int x,fa,ma;char sex;
	for(int i=0;i<n;i++)
	{
		cin>>x>>sex>>fa>>ma;
		p[x]={sex,fa,ma};
		if(fa!=-1)p[fa].sex='M';
		if(ma!=-1)p[ma].sex='F';
	}
	int K;cin>>K;
	int st[100010];
	bool f=true;
	function<void(int,int)> dfs = [&](int u,int depth)
	{
			if(depth>=5||u==-1||u==0)return ;
			st[u]++;
			if(st[u]>=2)f=false;
			dfs(p[u].fa,depth+1);
			dfs(p[u].ma,depth+1);
			return ;
	};
	
	for(int i=0;i<K;i++)
	{
		f=true;
		memset(st,0,sizeof st);
		int a,b;cin>>a>>b;
		if(p[a].sex==p[b].sex)
		{
			cout<<"Never Mind"<<'\n';
			continue;
		}
		dfs(a,0);
		dfs(b,0);
		if(f)cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
}
举报

相关推荐

0 条评论