L2-016 愿天下有情人都是失散多年的兄妹 题解

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

链接:题目详情 - L2-016 愿天下有情人都是失散多年的兄妹 (pintia.cn)

思路:刚开始想用并查集,后来改用DFS,但确切来说只是用了它的一个简单的搜索功能。

先说最后卡住的点,题给测试数据中可能有老一辈的人,所以输入父母数据时,需要对父母Id增加性别信息记录,加了这个处理后,直接就通过了。

刚开始用了结构体数组,后来发现用不上,删了。可以用pair或者map写写试试。

#include<cstdio>
const int N=100005;
int n,m,dai,a,b,c;
bool wudai[N]={false};
char sexa[N];
int father[N],mother[N];
void init(){
    for(int i=0;i<N;i++){
        father[i]=-1;
        mother[i]=-1;
    }
}
void DFS(int x){
    if(dai==5){
        return;
    }
    dai++;
    wudai[x]=true;
    a=father[x];
    if(a!=-1){
        DFS(a);
    }
    b=mother[x];
    if(b!=-1){
        DFS(b);
    }
    dai--;
}
void DFS1(int x){
    if(dai==5){
        return;
    }
    dai++;
    if(wudai[x])
        c=1;
    a=father[x];
    if(a!=-1){
        DFS1(a);
    }
    b=mother[x];
    if(b!=-1){
        DFS1(b);
    }
    dai--;
}
int main(){
    int i,x,y,a,b,l,v,e;
    char o;
    init();
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d %c %d %d",&l,&o,&v,&e);
        if(v!=-1){
            father[l]=v;
            sexa[v]='M';
        }
        if(e!=-1){
            mother[l]=e;
            sexa[e]='F';
        }
        sexa[l]=o;
    }
    scanf("%d",&m);
    for(i=0;i<m;i++){
        scanf("%d %d",&x,&y);
        for(int j=0;j<N;j++){
            wudai[j]=false;
        }
        if(sexa[x]==sexa[y])
            printf("Never Mind\n");
        else{
            dai=0;
            DFS(x);
            c=0;
            dai=0;
            DFS1(y);
            if(c==1){
                printf("No\n");
            }
            else
                printf("Yes\n");
        }
    }
    return 0;
}
全部评论

相关推荐

03-03 14:54
河南大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# AI面会问哪些问题? #
24476次浏览 480人参与
# 中国电信笔试 #
31011次浏览 283人参与
# 米连集团26产品管培生项目 #
12919次浏览 285人参与
# 你的实习产出是真实的还是包装的? #
18635次浏览 329人参与
# 如果秋招能重来,我会____ #
96616次浏览 500人参与
# 春招至今,你的战绩如何? #
59439次浏览 535人参与
# 开放七大实习专项,百度暑期实习值得冲吗 #
14048次浏览 209人参与
# i人适合做什么工作 #
36838次浏览 124人参与
# 我是面试官,请用一句话让我破防 #
79444次浏览 219人参与
# 哪些公司真双非友好? #
69176次浏览 287人参与
# 找AI工作可以去哪些公司? #
7561次浏览 179人参与
# 从事AI岗需要掌握哪些技术栈? #
7528次浏览 238人参与
# 面试尴尬现场 #
220729次浏览 861人参与
# 投递几十家公司,到现在0offer,大家都一样吗 #
339792次浏览 2163人参与
# 五一之后,实习真的很难找吗? #
102792次浏览 584人参与
# 金三银四,你的春招进行到哪个阶段了? #
21492次浏览 275人参与
# 你做过最难的笔试是哪家公司 #
29736次浏览 182人参与
# 你小时候最想从事什么职业 #
159832次浏览 2072人参与
# 阿里笔试 #
176137次浏览 1300人参与
# 应届生第一份工资要多少合适 #
20463次浏览 84人参与
# 一张图晒出你司的标语 #
3784次浏览 71人参与
# 面试被问期望薪资时该如何回答 #
382445次浏览 2163人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务