trang chủ / đề bài / gr11_kruskal

Xây dựng mạng lưới đường

Đề bài

Mô tả

Một tỉnh có n thành phố đánh số từ 1 đến n, hiện chưa có con đường nào. Có m phương án xây đường, phương án thứ i xây một con đường hai chiều nối thành phố ui với thành phố vi với chi phí wi.

Hãy chọn một số phương án để xây sao cho từ mỗi thành phố đều đi được tới mọi thành phố khác (có thể đi qua các thành phố trung gian), và tổng chi phí là nhỏ nhất.

Lưu ý: có thể có nhiều phương án nối cùng một cặp thành phố, và có phương án với ui=vi (con đường đó vô dụng).

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên n, m.
  • m dòng tiếp theo, dòng thứ i chứa ba số nguyên ui,vi,wi.

Dữ liệu ra

In ra tổng chi phí nhỏ nhất. Nếu không thể nối tất cả các thành phố, in ra −1.

Ràng buộc

  • 1≤n≤105
  • 0≤m≤2·105
  • 1≤ui,vi≤n
  • 1≤wi≤109

Ví dụ

Input Output Giải thích
4 6
1 2 3
2 3 1
4 4 1
3 4 4
1 3 2
2 3 8
7 Xây các đường 2−3 (chi phí 1), 1−3 (chi phí 2) và 3−4 (chi phí 4). Đường 4−4 không giúp nối thêm thành phố nào.
5 3
1 2 5
2 3 5
4 5 1
-1 Không có phương án nào nối nhóm {1,2,3} với nhóm {4,5}.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.402 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0