Cây khung 0-1

Đề bài

Mô tả

Cho một đồ thị vô hướng đầy đủ gồm n đỉnh đánh số từ 1 đến n: giữa mọi cặp đỉnh phân biệt đều có đúng một cạnh nối. Trọng số của mỗi cạnh bằng 0 hoặc 1, trong đó có đúng m cạnh mang trọng số 1, tất cả các cạnh còn lại mang trọng số 0.

Hãy tính trọng số của cây khung nhỏ nhất của đồ thị, tức là tổng trọng số nhỏ nhất có thể của n−1 cạnh nối tất cả n đỉnh thành một cây.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và m: số đỉnh và số cạnh có trọng số 1.
  • m dòng tiếp theo, dòng thứ i chứa hai số nguyên ai và bi: hai đầu mút của cạnh trọng số 1 thứ i. Không có cạnh nào xuất hiện hai lần.

Dữ liệu ra

In ra một số nguyên duy nhất: trọng số của cây khung nhỏ nhất.

Ràng buộc

  • 1≤n≤105
  • 0≤m≤min(n(n−1)2, 105)
  • 1≤ai,bi≤n và ai≠bi

Ví dụ

Input Output Giải thích
6 11
1 3
1 4
1 5
1 6
2 3
2 4
2 5
2 6
3 4
3 5
3 6
2 Các cạnh trọng số 0 là 1−2, 4−5, 4−6, 5−6. Chúng chia 6 đỉnh thành ba nhóm liên thông {1,2}, {3}, {4,5,6}. Nối ba nhóm này với nhau cần thêm đúng 2 cạnh trọng số 1.
3 0 0 Mọi cạnh đều có trọng số 0 nên cây khung nào cũng có trọng số 0.
4 4
1 3
1 4
2 3
2 4
1 Các cạnh trọng số 0 là 1−2 và 3−4, tạo thành hai nhóm {1,2} và {3,4}. Cần đúng 1 cạnh trọng số 1 để nối hai nhóm. Lưu ý đồ thị gồm các cạnh trọng số 1 ở đây là liên thông, nhưng đáp án vẫn khác 0.

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