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

7-1 愿天下有情人都是失散多年的兄妹 (25 分),第1张

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

输入样例
24
00001 M 01111 -1
00002 F 02222 03333
00003 M 02222 03333
00004 F 04444 03333
00005 M 04444 05555
00006 F 04444 05555
00007 F 06666 07777
00008 M 06666 07777
00009 M 00001 00002
00010 M 00003 00006
00011 F 00005 00007
00012 F 00008 08888
00013 F 00009 00011
00014 M 00010 09999
00015 M 00010 09999
00016 M 10000 00012
00017 F -1 00012
00018 F 11000 00013
00019 F 11100 00018
00020 F 00015 11110
00021 M 11100 00020
00022 M 00016 -1
00023 M 10012 00017
00024 M 00022 10013
9
00021 00024
00019 00024
00011 00012
00022 00018
00001 00004
00013 00016
00017 00015
00019 00021
00010 00011
输出样例
Never Mind
Yes
Never Mind
No
Yes
No
Yes
No
No
代码
#include 
#include 
#include 
using namespace std;
const int Inf=1e5+5;
int n,m;//结点数,测试样例数
bool flag;//标记情侣是否为近亲
vector v[Inf];//下标为人物编号,值为这个人的双亲结点的编号
char sex[Inf];//下标为人物编号,值表示这个人的性别
bool vis[Inf];//下标为人物编号,值表示这个人是否被访问过(是否是五代以内亲属)
void dfs(int info,int num){//num表示第几代,初始化为0
    //递归边界1:超过五代
    if (num == 4){
        return;
    }
    //如果结点info的父、母结点没有被访问过,则dfs之;反之则说明五代以内出现近亲,置flag为1
    for(int i=0;i> n;
    while(n--){
        int tinfo, tfatinfo, tmoninfo;
        char tsex;
        cin>>tinfo>>tsex>>tfatinfo>>tmoninfo;
        sex[tinfo]=tsex;//记录自身的性别
        if(tfatinfo!=-1)//-1不用保存,避免数据处理不当导致数组越界 
		{
			v[tinfo].push_back(tfatinfo);//保存父亲编号 
			sex[tfatinfo]='M';//记录父亲性别 
		}
		if(tmoninfo!=-1)
		{
			v[tinfo].push_back(tmoninfo);
			sex[tmoninfo]='F';
        }
    }
    //读入测试样例
    cin >> m;
    while(m--){
        int tinfo1, tinfo2;
        cin >> tinfo1 >> tinfo2;
        if(sex[tinfo1]==sex[tinfo2]){
            cout << "Never Mind" << endl;
        }else{
            memset(vis, 0, sizeof(vis));
            flag = 0;
            vis[tinfo1] = 1;
            vis[tinfo2] = 1;
            dfs(tinfo1, 0);
            dfs(tinfo2, 0);
            if(flag){
                cout << "No" << endl;
            }else{
                cout << "Yes" << endl;
            }
        }

    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5650411.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存