किसी दिए गए DAG (निर्देशित एसाइक्लिक ग्राफ) के लिए, इसका प्रत्येक टोपोलॉजिकल प्रकार सभी लंबों का क्रमपरिवर्तन है, जहां DAG में प्रत्येक किनारे (u, v) के लिए, u क्रमचय में v से पहले प्रकट होता है ।
आपका कार्य किसी दिए गए 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]