Menu
CoddyTech

Strongly Connected Components

SulitGrafpython iconjava iconcpp iconc iconjs icon+10

Graf berarah memiliki n simpul, bernomor dari 0 hingga n-1, dan daftar edges, dengan [from, to] sebagai sisi dari simpul from ke simpul to.

Komponen terhubung kuat adalah kelompok simpul terbesar yang setiap simpulnya dapat mencapai semua simpul lainnya dengan mengikuti sisi. Setiap simpul termasuk tepat dalam satu komponen, dan simpul yang tidak berada pada siklus mana pun membentuk komponen tersendiri. Kembalikan jumlah komponen terhubung kuat.

Fungsi

countSCC(n: integer, edges: integer-2d-array) → integer
ninteger
jumlah node
edgesinteger-2d-array
sisi berarah, masing-masing sebagai [from, to]
Mengembalikaninteger
jumlah komponen yang terhubung kuat

Batasan

  • 2 ≤ n ≤ 104
  • 1 ≤ edges.length ≤ 5000
  • edges[i] = [from, to] dengan 0 ≤ from, to < n dan from ≠ to
  • Tidak ada edge yang muncul dua kali.

Contoh

Input
n = 6edges = [[0, 1], [1, 2], [2, 0], [2, 3], [3, 4], [4, 3], [5, 4]]
Output
3
Penjelasan
Node 0, 1, dan 2 membentuk perulangan, sehingga node-node tersebut dapat saling mencapai. Node 3 dan 4 saling menunjuk. Node 5 dapat mencapai 4, tetapi tidak ada yang kembali ke 5, sehingga node 5 berdiri sendiri: 3 komponen.
challenge icon

Pertanyaan lanjutan

Berapa sedikit sisi yang perlu kamu tambahkan agar seluruh graf menjadi satu komponen terhubung kuat?

Reset kode
def countSCC(n, edges):
    # Tulis kodemu di sini

Tes #1

Tes #2

Argumen

n = 6
edges = [[0, 1], [1, 2], [2, 0], [2, 3], [3, 4], [4, 3], [5, 4]]

Output yang diharapkan

3