Belirli bir DAG (yönlendirilmiş asiklik grafik) için, onun topolojik tür her biri, her kenarları için tüm tepe noktaları bir permütasyon olan (u, v) DAG, u önce görüntülenen v permütasyonda.
Göreviniz, belirli bir DAG'ın toplam topolojik çeşit sayısını hesaplamaktır.
kurallar
- Kodlamada yararlı hesaplamalar yapmadığınız sürece, grafiği temsil etmek için bitişiklik matrisi, bitişiklik listesi veya kenar listesi gibi herhangi bir biçimi kullanabilirsiniz. Ayrıca, yararlıysa, girdide köşe sayısı veya köşe listesi gibi şeylere de sahip olabilirsiniz.
- Girişteki grafiğin her zaman bir DAG (herhangi bir döngüye sahip olmadığını) varsayabilirsiniz.
- Programınız herhangi bir girdi için teoride çalışmalıdır. Ancak, dilinizdeki temel tamsayı türünü aşarsa başarısız olabilir.
- Köşelerin adları herhangi bir türde ardışık değerler olabilir. Örneğin: 0 veya 1'den başlayan sayılar. (Ve elbette bu sayıya kod kaydetmiyorsanız, elbette.)
- Bu kod golfü. En kısa kod kazanır.
Misal
Bu, farklı formatlarda aynı girdidir. Programınızın hepsini kabul etmek zorunda değilsiniz. Tepe noktaları her zaman 0'dan başlayan tamsayılardır.
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] ]
Bu resimde gösterilen grafik:
Çıktı şöyle olmalıdır:
9
Topolojik çeşitler:
[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]