एक निर्देशित ग्राफ को देखते हुए, सबसे लंबे चक्र का उत्पादन।
नियम
- किसी भी उचित इनपुट प्रारूप की अनुमति है (जैसे किनारों की सूची, कनेक्टिविटी मैट्रिक्स)।
- लेबल महत्वपूर्ण नहीं हैं, इसलिए आप उन लेबलों पर कोई प्रतिबंध लगा सकते हैं जिनकी आपको आवश्यकता है और / या इच्छा है, इसलिए जब तक वे अतिरिक्त जानकारी इनपुट में नहीं दी जाती हैं (जैसे आपको आवश्यकता नहीं हो सकती है कि चक्र में नोड्स हैं) पूर्णांक के साथ लेबल, और अन्य नोड्स को अल्फाबेटिक स्ट्रिंग्स के साथ लेबल किया जाता है)।
- एक चक्र नोड्स का एक अनुक्रम है जो सभी जुड़े हुए हैं, और कोई नोड दोहराया नहीं जाता है, नोड के अलावा अन्य चक्र की शुरुआत और अंत है (
[1, 2, 3, 1]
यह एक चक्र है, लेकिन[1, 2, 3, 2, 1]
नहीं है)। - यदि ग्राफ एसाइक्लिक है, तो सबसे लंबे चक्र की लंबाई 0 है, और इस तरह एक खाली आउटपुट (उदाहरण के लिए खाली सूची, सभी पर कोई आउटपुट नहीं) होना चाहिए।
- चक्र में नोड्स की सूची के अंत में पहला नोड दोहराना वैकल्पिक है (
[1, 2, 3, 1]
और[1, 2, 3]
उसी चक्र को निरूपित करें)। - यदि एक ही लंबाई के कई चक्र हैं, तो उनमें से कोई एक या सभी आउटपुट हो सकते हैं।
- बिल्डिंस की अनुमति है, लेकिन यदि आपका समाधान एक का उपयोग करता है, तो आपको एक वैकल्पिक समाधान शामिल करने के लिए प्रोत्साहित किया जाता है जो ट्रिवियलाइजिंग बिल्डिंस का उपयोग नहीं करता है (उदाहरण के लिए एक बिलिन जो सभी चक्रों को आउटपुट करता है)। हालाँकि, वैकल्पिक समाधान आपके स्कोर की ओर बिल्कुल भी नहीं गिना जाएगा, इसलिए यह पूरी तरह से वैकल्पिक है।
परीक्षण के मामलों
इन परीक्षण मामलों में, इनपुट को किनारों की एक सूची के रूप में दिया जाता है (जहां पहला तत्व स्रोत नोड है और दूसरा तत्व गंतव्य नोड है), और आउटपुट पहले / अंतिम नोड की पुनरावृत्ति के बिना नोड्स की एक सूची है।
[(0, 0), (0, 1)] -> [0]
[(0, 1), (1, 2)] -> []
[(0, 1), (1, 0)] -> [0, 1]
[(0, 1), (1, 2), (1, 3), (2, 4), (4, 5), (5, 1)] -> [1, 2, 4, 5]
[(0, 1), (0, 2), (1, 3), (2, 4), (3, 0), (4, 6), (6, 8), (8, 0)] -> [0, 2, 4, 6, 8]
[(0, 0), (0, 8), (0, 2), (0, 3), (0, 9), (1, 0), (1, 1), (1, 6), (1, 7), (1, 8), (1, 9), (2, 1), (2, 3), (2, 4), (2, 5), (3, 8), (3, 1), (3, 6), (3, 7), (4, 1), (4, 3), (4, 4), (4, 5), (4, 6), (4, 8), (5, 0), (5, 8), (5, 4), (6, 0), (6, 1), (6, 2), (6, 3), (6, 4), (6, 5), (6, 6), (6, 7), (6, 9), (7, 0), (7, 1), (7, 2), (7, 3), (7, 4), (7, 5), (7, 8), (7, 9), (8, 0), (8, 1), (8, 2), (8, 5), (8, 9), (9, 1), (9, 2), (9, 3), (9, 4), (9, 5), (9, 6)] -> [0, 9, 6, 7, 8, 2, 5, 4, 3, 1]
[(0, 0), (0, 2), (0, 4), (0, 5), (0, 7), (0, 9), (0, 11), (1, 2), (1, 4), (1, 5), (1, 8), (1, 9), (1, 10), (2, 0), (2, 1), (2, 3), (2, 4), (2, 5), (2, 6), (3, 0), (3, 1), (3, 5), (3, 6), (3, 7), (3, 8), (3, 9), (3, 11), (4, 1), (4, 3), (4, 7), (4, 8), (4, 9), (4, 10), (4, 11), (5, 0), (5, 4), (5, 6), (5, 7), (5, 8), (5, 11), (6, 0), (6, 8), (6, 10), (6, 3), (6, 9), (7, 8), (7, 9), (7, 2), (7, 4), (7, 5), (8, 8), (8, 9), (8, 2), (8, 4), (8, 7), (9, 0), (9, 1), (9, 2), (9, 3), (9, 6), (9, 10), (9, 11), (10, 8), (10, 3), (10, 5), (10, 6), (11, 2), (11, 4), (11, 5), (11, 9), (11, 10), (11, 11)] -> [0, 11, 10, 6, 9, 3, 8, 7, 5, 4, 1, 2]