إعادة بناء التسلسل الهرمي للأقسام بناءً على أزواج التبعية

Python Hard dicts

مهمة «إعادة بناء التسلسل الهرمي للأقسام بناءً على أزواج التبعية»

تم تقديم أزواج من علاقات التبعية بين الموظفين بتنسيق 'مدير:مرؤوس'. يجب استعادة الهيكل الهرمي الكامل للأقسام. يمكن أن يكون لكل موظف عدة مرؤوسين، ولكن مدير واحد فقط (باستثناء المدير الجذري). قد تحتوي بيانات الإدخال على دورات أو بيانات غير مكتملة — يجب تجاهل هذه الحالات. قم بإخراج لكل قسم (أعلى مدير في السلسلة) قائمة بجميع موظفي هذا القسم بترتيب أبجدي، مفصولة بمسافة. يتم فرز الأقسام حسب اسم مدير القسم.

تنسيق الإدخال

السطر الأول يحتوي على عدد صحيح N (1 ≤ N ≤ 10000) — عدد الأزواج. ثم N سطر، كل سطر بالشكل: 'رئيس:مرؤوس' (أحرف لاتينية، طول من 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