#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,因此最早祖先是 Arthur
  • Arthur 自身没有父亲记录,因此他的最早祖先就是他自己