#866. 🧬 A1《家谱的源头》
🧬 A1《家谱的源头》
🧬 A1《家谱的源头》
在 兔猫信奥学院 的档案室里,小兔和小猫正在帮加菲老师整理一份古老的家族家谱。
家谱中只记录了父子关系:
- 每个人都有 至多一个父亲
- 家族关系不会形成环
- 家谱的代数不超过 30 代
现在,加菲老师会不断地提出问题:
“这个人,最早能追溯到哪一位祖先?”
请你根据给定的家谱记录,快速回答这些问题。
📘 关系说明
家谱记录和查询以多行文本的形式给出,包含三种指令:
#name:表示接下来描述的是 父亲,其名字为name+name:表示这是刚才那位父亲的 儿子,名字为name?name:询问此人 最早的祖先是谁$:表示输入结束
重要约定
- 每个人的名字 恰好 6 个字符
- 首字母大写
- 任意两个人的名字 不会相同
- 父子关系最多 1000 组
- 家族总人数最多 50000 人
🧠 任务要求
对于每一个 ?name 形式的询问:
-
输出:
本人名字 最早祖先名字 -
如果某人没有父亲记录,则 他自己就是最早祖先
🖼️ 家谱关系示意图(仅用于理解)
下面是一段示例家谱的结构示意(非输入格式):
George
└── Rodney
Arthur
├── Gareth
│ └── Edward
└── Walter
从任意一个人出发,沿着“父亲”方向不断向上追溯,直到无法再找到父亲为止。
#George
+Rodney
#Arthur
+Gareth
+Walter
#Gareth
+Edward
?Edward
?Walter
?Rodney
?Arthur
$
Edward Arthur
Walter Arthur
Rodney George
Arthur Arthur
✨ 说明
Edward的父亲是Gareth,而Gareth的父亲是Arthur,因此最早祖先是ArthurArthur自身没有父亲记录,因此他的最早祖先就是他自己