Untuk DAG yang diberikan (grafik asiklik terarah), masing-masing jenis topologisnya adalah permutasi dari semua simpul, di mana untuk setiap tepi (u, v) dalam DAG, u muncul sebelum v dalam permutasi.
Tugas Anda adalah untuk menghitung jumlah total jenis topologi DAG yang diberikan.
Aturan
- Anda dapat menggunakan format apa pun untuk mewakili grafik, seperti matriks adjacency, daftar adjacency atau daftar tepi, selama Anda tidak melakukan perhitungan yang berguna dalam pengkodean Anda. Anda juga dapat memiliki hal-hal seperti jumlah titik atau daftar titik dalam input, jika itu berguna.
- Anda dapat mengasumsikan grafik dalam input selalu DAG (tidak memiliki siklus).
- Program Anda harus bekerja secara teori untuk masukan apa pun. Tetapi itu bisa gagal jika melimpahi tipe integer dasar dalam bahasa Anda.
- Nama simpul dapat berupa nilai berurutan dalam jenis apa pun. Misalnya: angka mulai dari 0 atau 1. (Dan hanya jika Anda tidak menyimpan kode dalam angka ini, tentu saja.)
- Ini adalah kode-golf. Kode terpendek menang.
Contoh
Ini adalah input yang sama dalam berbagai format. Program Anda tidak harus menerima semuanya. Verteks selalu bilangan bulat mulai dari 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] ]
Ini adalah grafik yang ditunjukkan pada gambar ini:
Outputnya harus:
9
Jenis topologi adalah:
[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]