Module: topolojik sıralama


Problem

1 /5


topolojik sıralama

Theory Click to read/hide

Algoritma şu şekilde açıklanabilir:
n köşesi ve m kenarı olan yönlendirilmiş bir grafik verildi. Köşelerini, her bir kenar daha düşük numaralı bir tepe noktasından daha yüksek numaralı bir tepe noktasına gidecek şekilde yeniden numaralandırmak gerekir.
Başka bir deyişle, grafiğin tüm kenarları tarafından verilen sıraya karşılık gelen bir köşe permütasyonu (topolojik sıra) bulmak gerekir.
Derinlik öncelikli aramayı kullanacağız (dfs(v))
 \(dfs(v)\) 'den çıkış anında tepe noktamızı bir listenin başına eklersek, o zaman sonunda bu listede topolojik bir sıralama elde edersiniz.
Böylece istenen topolojik sıralama — bu, çıkış zamanlarının azalan sırasına göre sıralanır.

Problem

Yönlendirilmiş ağırlıksız bir grafik verildiğinde. Bunu topolojik olarak sıralamak gerekir.

Giriş: İlk satır n ve m olmak üzere iki doğal sayı içerir (1≤n≤105, 1≤m≤10< sup >5) — sırasıyla grafikteki köşe ve kenarların sayısı. Sonraki m satır grafiğin kenarlarını listeler. Her kenar bir çift sayı ile verilir — sırasıyla başlangıç ​​ve bitiş köşelerinin sayıları.
 
Çıktı: Herhangi bir topolojik türde grafiği bir tepe sayıları dizisi olarak yazdırın. Grafik topolojik olarak sıralanamıyorsa, &eksi;1 yazdırın.
İlk satır, N köşe noktalarının ve M kenarlarının sayısını içerir. 

Örnekler
# Girdi Çıktı
1 4 4
14
4 3
4 2
3 2
1 4 3 2