สำหรับ DAG ที่กำหนด (กราฟ acyclic กำกับ) การเรียงลำดับทอพอโลยีแต่ละอันเป็นการเปลี่ยนแปลงของจุดยอดทั้งหมดที่ทุก ๆ ขอบ(u, v)ใน DAG คุณจะปรากฏก่อนvในการเปลี่ยนรูป
งานของคุณคือการคำนวณจำนวนโทโพโลยีทั้งหมดของ DAG ที่กำหนด
กฎระเบียบ
- คุณสามารถใช้รูปแบบใดก็ได้เพื่อแสดงกราฟเช่น adjacency matrix, adjacency list หรือ edge list ตราบใดที่คุณไม่มีการคำนวณที่มีประโยชน์ในการเข้ารหัสของคุณ คุณยังสามารถมีสิ่งต่าง ๆ เช่นจำนวนจุดยอดหรือรายการจุดยอดในอินพุตถ้าสิ่งเหล่านั้นมีประโยชน์
- คุณสามารถสมมติกราฟในอินพุตได้เสมอ DAG (ไม่มีรอบใด ๆ )
- โปรแกรมของคุณควรทำงานในทางทฤษฎีสำหรับการป้อนข้อมูลใด ๆ แต่มันอาจล้มเหลวได้หากมันล้นประเภทจำนวนเต็มพื้นฐานในภาษาของคุณ
- ชื่อของจุดยอดสามารถเป็นค่าต่อเนื่องในประเภทใดก็ได้ ตัวอย่างเช่น: ตัวเลขเริ่มต้นที่ 0 หรือ 1 (และเฉพาะในกรณีที่คุณไม่ได้เก็บรหัสไว้ในหมายเลขนี้แน่นอน)
- นี่คือรหัสกอล์ฟ รหัสที่สั้นที่สุดชนะ
ตัวอย่าง
นี่เป็นอินพุตเดียวกันในรูปแบบที่ต่างกัน โปรแกรมของคุณไม่จำเป็นต้องยอมรับทั้งหมด จุดยอดเป็นจำนวนเต็มเริ่มต้นที่ 0 เสมอ
Adjacency list:
[ [1 2 3 5] [2 4] [] [2] [] [3] ]
Adjacency matrix:
[ [0 1 1 1 0 1] [0 0 1 0 1 0] [0 0 0 0 0 0] [0 0 1 0 0 0] [0 0 0 0 0 0] [0 0 0 1 0 0] ]
Edge list:
6 [ [0 1] [0 2] [0 3] [0 5] [1 2] [1 4] [3 2] [5 3] ]
มันเป็นกราฟที่แสดงในภาพนี้:
ผลลัพธ์ควรเป็น:
9
ทอพอโลยีแปลก ๆ คือ:
[0 1 4 5 3 2]
[0 1 5 4 3 2]
[0 1 5 3 4 2]
[0 1 5 3 2 4]
[0 5 1 4 3 2]
[0 5 1 3 4 2]
[0 5 1 3 2 4]
[0 5 3 1 4 2]
[0 5 3 1 2 4]