Dua simpul berbeda dalam grafik berarah sangat terhubung jika ada jalur dalam grafik dari satu sama lain. Sebuah komponen sangat terhubung dari grafik adalah bagian dari grafik sehingga setiap pasangan simpul yang berbeda dalam subset sangat terhubung, dan menambahkan lagi simpul untuk subset akan mematahkan properti ini.
Tantangan Anda adalah memisahkan grafik menjadi komponen-komponennya yang sangat terhubung. Khususnya, Anda harus menampilkan semua SCC dalam grafik.
I / O:
Sebagai input, Anda dapat menggunakan daftar tepi terarah, daftar adjacency, matriks adjacency, atau format input wajar lainnya. Tanyakan apakah Anda tidak yakin. Anda dapat mengasumsikan grafik tidak memiliki simpul yang benar-benar terputus, dan bahwa tidak ada tepi sendiri, tetapi Anda tidak dapat membuat asumsi lebih lanjut. Anda juga dapat secara opsional mengambil daftar simpul sebagai input, serta jumlah simpul.
Sebagai output, Anda harus memberikan partisi simpul, seperti daftar daftar simpul, di mana setiap sublist adalah komponen yang sangat terhubung, atau pelabelan simpul, di mana setiap label sesuai dengan komponen yang berbeda.
Jika Anda menggunakan pelabelan, label harus berupa simpul, atau urutan bilangan bulat berturut-turut. Ini untuk mencegah penghancuran komputasi ke dalam label.
Contoh:
Contoh-contoh ini mengambil daftar tepi, di mana setiap tepi diarahkan dari entri 1 ke entri kedua, dan partisi keluaran. Anda bebas menggunakan format ini atau yang lain.
Input ada di baris pertama, output ada di baris kedua.
[[1, 2], [2, 3], [3, 1], [1, 4]]
[[1, 2, 3], [4]]
[[1, 2], [2, 3], [3, 4]]
[[1], [2], [3], [4]]
[[1, 2], [2, 1], [1, 3], [2, 4], [4, 2], [4, 3]]
[[1, 2, 4], [3]]
[[1, 2], [2, 3], [2, 5], [2, 6], [3, 4], [3, 7], [4, 3], [4, 8], [5, 1], [5, 6], [6, 7], [7, 6], [8, 7], [8, 4]]
[[1, 2, 5], [3, 4, 8], [6, 7]]
Penilaian dan pembatasan:
Celah standar dilarang, seperti biasa. Juga, built-in yang khusus menangani komponen yang sangat terhubung dilarang.
Solusi harus berjalan dalam waktu tidak lebih dari satu jam pada contoh yang diberikan. (Ini dimaksudkan untuk mencegah solusi eksponensial lambat, dan tidak ada yang lain.)
Ini kode golf. Bytes paling sedikit menang.
8
tidak ada dalam komponen dengan [3,4]
karena tidak bisa hanya masing 6
- masing dan 7
tidak ada yang mencapai itu.