Yönlendirilmiş bir grafik verildiğinde, en uzun döngüyü elde edin.
kurallar
- Herhangi bir makul giriş formatına izin verilir (örn. Kenar listesi, bağlantı matrisi).
- Etiketler önemli değildir, bu nedenle girdi içerisinde verilmeyen ek bilgiler içermedikleri sürece ihtiyacınız olan ve / veya arzu ettiğiniz etiketler için herhangi bir kısıtlama uygulayabilirsiniz (örneğin, döngüdeki düğümlerin tamsayılarla ve diğer düğümler alfabetik dizelerle etiketlenmiştir).
- Bir döngü, döngünün başlangıcı ve bitişi olan (
[1, 2, 3, 1]
bir döngüdür, ancak[1, 2, 3, 2, 1]
değildir) düğüm dışındaki tüm düğümlerin bağlı olduğu bir düğüm dizisidir . - Grafik döngüsel değilse, en uzun döngü 0 uzunluğuna sahiptir ve bu nedenle boş bir çıktı vermelidir (örneğin boş liste, hiç çıktı yok).
- Döngüdeki düğüm listesinin sonunda ilk düğümü tekrarlamak isteğe bağlıdır (
[1, 2, 3, 1]
ve[1, 2, 3]
aynı döngüyü gösterir). - Aynı uzunlukta birden çok döngü varsa, bunlardan herhangi biri veya tamamı çıktılanabilir.
- Yerleşiklere izin verilir, ancak çözümünüz bir tane kullanıyorsa, önemsizleştirici yerleşikleri (örneğin, tüm döngüleri veren bir yerleşik) kullanmayan alternatif bir çözüm eklemeniz önerilir. Ancak, alternatif çözüm puanınıza hiç sayılmaz, bu yüzden tamamen isteğe bağlıdır.
Test Durumları
Bu test durumlarında, girdi bir kenar listesi olarak verilir (burada birinci eleman kaynak düğümdür ve ikinci eleman hedef düğümdür) ve çıkış, ilk / son düğümü tekrarlamadan düğümlerin bir listesidir.
[(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]