团体程序设计天梯赛-练习集 - L2-016 愿天下有情人都是失散多年的兄妹(25 分)

简介: 团体程序设计天梯赛-练习集 - L2-016 愿天下有情人都是失散多年的兄妹(25 分)

题目链接:点击打开链接

题目大意:略。


解题思路:

  • 递归向前五代找两个人有没有同一个祖先。
  • 父母的性别需要设置!(父母可能离婚,所以也可能属于情人)


AC 代码

#include<bits/stdc++.h>#include<cmath>#define mem(a,b) memset(a,b,sizeof a)#define ssclr(ss) ss.clear(), ss.str("")#define INF 0x3f3f3f3f#define MOD 1000000007usingnamespacestd;
typedeflonglongll;
constintmaxn=1e5+10;
structnode{
charsex;
}man[maxn];
intfarr[maxn], morr[maxn];
intfindx(inta,intb,intcnt)
{
if(a==-1||b==-1) return1;
if(morr[a]!=-1&&morr[a]==morr[b] ||farr[a]!=-1&&farr[a]==farr[b]) return0;
if(++cnt>=4) return1; // 为什么等于4? 模拟一下即可returnfindx(morr[a],morr[b],cnt) &&findx(farr[a],farr[b],cnt) &&findx(farr[a],morr[b],cnt) &&findx(morr[a],farr[b],cnt);
}
intmain()
{
mem(farr,-1), mem(morr,-1);
intn,q;
intchild, a, b;
scanf("%d",&n);
for(inti=0;i<n;i++)
    {
cin>>child;
cin>>man[child].sex>>a>>b;
if(a!=-1) man[a].sex='M';
if(b!=-1) man[b].sex='F';
farr[child]=a;
morr[child]=b;
    }
scanf("%d",&q);
while(q--)
    {
cin>>a>>b;
if(man[a].sex==man[b].sex) puts("Never Mind");
elseif(findx(a,b,0)) puts("Yes");
elseputs("No");
    }
return0;
}
目录
相关文章
团体程序设计天梯赛-练习集L2篇⑨
团体程序设计天梯赛-练习集L2篇⑨
160 0
团体程序设计天梯赛-练习集L2篇⑦
团体程序设计天梯赛-练习集L2篇⑦
76 0
|
Perl
团体程序设计天梯赛-练习集L1篇③
团体程序设计天梯赛-练习集L1篇③
132 0
|
测试技术
团体程序设计天梯赛-练习集L2篇⑥
团体程序设计天梯赛-练习集L2篇⑥
111 0
|
测试技术 C语言 C++
PTA团体程序设计天梯赛-练习集:L1-003 个位数统计
给定一个 k 位整数 N=dk−110k−1+⋯+d1101+d0 (0≤di≤9, i=0,⋯,k−1, dk−1>0),请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1,和 1 个 3。 输入格式: 每个输入包含 1 个测试用例,即一个不超过 1000 位的正整数 N。 输出格式: 对 N 中每一种不同的个位数字,以 D:M 的格式在一行中输出该位数字 D 及其在 N 中出现的次数 M。要求按 D 的升序输出。
205 0
|
算法 安全 定位技术
团体程序设计天梯赛(上)
团体程序设计天梯赛
445 0
团体程序设计天梯赛(上)
|
存储 大数据
团体程序设计天梯赛(下)
团体程序设计天梯赛(下)
398 0
团体程序设计天梯赛(下)
|
机器学习/深度学习 程序员 Python
团体程序设计天梯赛-模拟赛(上)
团体程序设计天梯赛-模拟赛
732 0
团体程序设计天梯赛-模拟赛(上)
|
算法
团体程序设计天梯赛-模拟赛(下)
团体程序设计天梯赛-模拟赛(下)
486 0
团体程序设计天梯赛-模拟赛(下)
PTA团体程序设计天梯赛-练习集 L2 网红点打卡攻略(模拟)
PTA团体程序设计天梯赛-练习集 L2 网红点打卡攻略(模拟)
171 0