Mạng máy tính

Xem dạng PDF

Gửi bài giải

Điểm: 100,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C++, Pascal, Python, Rust

Bài 5. Mạng máy tính

Trung tâm tin học của Nam có ~n~ máy tính, các máy tính được đánh số từ 1 đến ~n~.

Hiện tại đang có ~m~ (~m ≥ n - 1~) dây nối giữa các máy tính. Dây nối thứ ~k~ (~1 ≤ k ≤ m~) nối hai máy tính ~u_k, v_k~ (~u_k ≠ v_k~) và giúp truyền tin theo cả hai chiều giữa hai máy tính. Có thể có nhiều dây nối giữa hai máy tính. Hiện tại, ~n~ máy tính có thể không liên thông với nhau.

Nam có thể tháo dây nối để đấu nối lại với mong muốn làm cho ~n~ máy tính liên thông. Nam có thể thực hiện:

  • Tháo một đầu nối của dây thứ ~k~ để đấu nối sang máy tính khác; thao tác này mất chi phí ~c_k~.
  • Tháo cả hai đầu nối của dây thứ ~k~ để đấu nối sang hai máy tính khác; thao tác này mất chi phí ~2 × c_k~.

Yêu cầu

Tính chi phí ít nhất cần thực hiện để liên thông được ~n~ máy tính.

Dữ liệu vào

Từ file văn bản BAI5.INP:

  • Dòng đầu chứa hai số nguyên dương ~n, m~.
  • Dòng thứ ~k~ (~1 ≤ k ≤ m~) trong ~m~ dòng tiếp theo chứa ba số nguyên dương ~u_k, v_k, c_k~.

Các số trên một dòng của dữ liệu vào được ghi cách nhau bởi dấu cách.

Kết quả

Ghi ra file văn bản BAI5.OUT gồm một dòng chứa một số là chi phí ít nhất tìm được.

Ví dụ

Ví dụ 1

BAI5.INP
3 3
1 2 1
1 2 2
1 3 1

BAI5.OUT
0

Giải thích: Các máy đã liên thông nên không cần nối dây. Chi phí là 0.

Ví dụ 2

BAI5.INP
3 3
1 2 1
1 2 2
1 2 3

BAI5.OUT
1

Giải thích: Máy 3 không liên thông. Có thể tháo một đầu nối của dây 1 để nối với máy 3, chi phí là 1.

Giới hạn

  • ~1 ≤ n ≤ 10^5~, ~n - 1 ≤ m ≤ 2 × 10^5~.
  • Với mỗi dây nối, ~1 ≤ u_k, v_k ≤ n~, ~u_k ≠ v_k~ và ~1 ≤ c_k ≤ 10^6~.

Đang tải...