团体程序设计天梯赛-练习集 - 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;
}
目录
相关文章
|
C++
【PTA】​L1-006 连续因子​(C++)
【PTA】​L1-006 连续因子​(C++)
503 0
【PTA】​L1-006 连续因子​(C++)
|
数据采集 机器学习/深度学习 存储
大数据的处理流程
【10月更文挑战第16天】
1457 2
|
8月前
|
数据采集 人工智能 数据挖掘
Python 编程基础与实战:从入门到精通
本文介绍Python编程语言,涵盖基础语法、进阶特性及实战项目。从变量、数据类型、运算符、控制结构到函数、列表、字典等基础知识,再到列表推导式、生成器、装饰器和面向对象编程等高级特性,逐步深入。同时,通过简单计算器和Web爬虫两个实战项目,帮助读者掌握Python的应用技巧。最后,提供进一步学习资源,助你在Python编程领域不断进步。
|
存储 定位技术
【天梯赛】L2-048 寻宝图 (DFS做法)
遇到一个非'0'字符(也就是'1'和 宝藏'2'到'9')就让ans++,同时将这个非'0'字符染色为'0',然后往四个方向(上、下、左、右)搜索,这里的目的是那一片岛屿(也就是那一片为'1'的部分)都染色为‘0’。本题就请你统计一下,给定的地图上一共有多少岛屿,其中有多少是有宝藏的岛屿。为了判断有宝藏的岛屿,这里我开了一个全局变量f来判断这一片岛屿是否有宝藏(也就是有无字符'2'-'9'),当搜到字符'2'~'9'时就将f标记为1。在一行中输出 2 个整数,分别是岛屿的总数量和有宝藏的岛屿的数量。
320 5
|
C++
【PTA】​ L1-009 N个数求和​ (C++)
【PTA】​ L1-009 N个数求和​ (C++)
648 0
【PTA】​ L1-009 N个数求和​ (C++)
|
Java 测试技术 开发者
滚雪球学Java(09-9):Java中的三目运算符,你真的掌握了吗?
【2月更文挑战第20天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!
402 1
|
存储 算法 Java
【DFS(深度优先搜索)详解】看这一篇就够啦
本文介绍了深度优先搜索(DFS)算法及其应用。DFS从某个顶点出发,深入探索图的每条路径,直到无法前进为止,然后回溯。文章详细解释了DFS的基本思想,并通过示例图展示了其执行过程。此外,文中还探讨了三种枚举方式:指数型枚举、排列型枚举和组合型枚举,并提供了具体的代码实现。最后,文章通过几道练习题帮助读者更好地理解和应用DFS算法。
10071 19
【DFS(深度优先搜索)详解】看这一篇就够啦
|
SQL JSON Java
springboot 如何编写增删改查后端接口,小白极速入门,附完整代码
本文为Spring Boot增删改查接口的小白入门教程,介绍了项目的构建、配置YML文件、代码编写(包括实体类、Mapper接口、Mapper.xml、Service和Controller)以及使用Postman进行接口测试的方法。同时提供了SQL代码和完整代码的下载链接。
springboot 如何编写增删改查后端接口,小白极速入门,附完整代码
|
Oracle Java 关系型数据库
jdk17安装全方位手把手安装教程 / 已有jdk8了,安装JDK17后如何配置环境变量 / 多个不同版本的JDK,如何配置环境变量?
本文提供了详细的JDK 17安装教程,包括下载、安装、配置环境变量的步骤,并解释了在已有其他版本JDK的情况下如何管理多个JDK环境。
20929 0
|
机器学习/深度学习 自然语言处理 算法
机器学习和深度学习的区别
机器学习和深度学习的区别
680 1