Reconstructing department hierarchy from pairs of subordination

Python Hard dicts

任务 «Reconstructing department hierarchy from pairs of subordination»

给定员工之间的从属关系对,格式为'上级:下属'。需要恢复完整的部门层级结构。每位员工可以有多个下属,但只能有一位上级(根主管除外)。输入数据可能包含循环或不完整数据——此类情况需忽略。对于每个部门(链中最顶层的上级),按字母顺序输出该部门所有员工名单,以空格分隔。各部门按部门主管名称排序。

输入格式

第一行包含一个整数 N (1 ≤ N ≤ 10000) — 表示对的数量。接下来 N 行,每行格式为:'boss:subordinate'(拉丁字母,长度从 1 到 20 个字符)。

输出格式

对于每个部门,输出一行:'部门负责人:员工1 员工2 ...'(该部门的所有员工,包括负责人本人,按字母顺序排列)。部门按负责人姓名排序。如果数据存在矛盾(循环、多个负责人),则仅输出无矛盾的部分。

示例

示例 1

输入
4 Alice:Bob Alice:Charlie Bob:David Charlie:Eve
输出
Alice: Alice Bob Charlie David Eve

示例 2

输入
3 X:Y Y:Z Z:X
输出

示例 3

输入
2 M:N M:O
输出
M: M N O

示例 4

输入
ab3c2
输出
abababcc
main.py