trang chủ / đề bài / roadcomp

Tư nhân hóa đường ở Treeland

Đề bài

Mô tả

Một đất nước gồm n thành phố và n−1 con đường hai chiều, mỗi con đường nối hai thành phố khác nhau. Từ một thành phố bất kỳ có thể đi đến mọi thành phố còn lại — nghĩa là hệ thống đường tạo thành một cây.

Chính phủ muốn bán toàn bộ các con đường cho các công ty tư nhân. Mỗi con đường được giao cho đúng một công ty, và một công ty có thể sở hữu nhiều con đường.

Một thành phố bị coi là không tốt nếu có một công ty sở hữu từ hai con đường trở lên cùng đi vào thành phố đó. Nói cách khác, thành phố là tốt khi tất cả các con đường nối với nó thuộc về những công ty khác nhau.

Chính phủ muốn chọn một số nguyên r — số lượng công ty tham gia — sao cho có thể giao mỗi con đường cho một công ty trong các công ty được đánh số từ 1 đến r, với số thành phố không tốt không vượt quá k. Hãy tìm giá trị r nhỏ nhất thỏa mãn điều kiện này và đưa ra một cách giao đường tương ứng.

Dữ liệu vào

  • Dòng đầu chứa hai số nguyên n và k — số thành phố và số thành phố không tốt tối đa được phép.
  • n−1 dòng tiếp theo, mỗi dòng chứa hai số nguyên xi,yi — con đường thứ i nối hai thành phố xi và yi.

Dữ liệu ra

  • Dòng đầu in ra số nguyên r nhỏ nhất tìm được.
  • Dòng thứ hai in ra n−1 số nguyên c1,c2,…,cn−1 (1≤ci≤r), trong đó ci là công ty sở hữu con đường thứ i.

Nếu có nhiều đáp án, in ra một đáp án bất kỳ.

Ràng buộc

  • 2≤n≤2·105
  • 0≤k≤n−1
  • 1≤xi,yi≤n, các con đường tạo thành một cây.

Ví dụ

Input Output Giải thích
4 2
3 1
1 4
1 2
1
1 1 1
Thành phố 1 có bậc 3. Với k=2, ta được phép để 1 thành phố không tốt, nên chỉ cần 1 công ty: thành phố 1 không tốt, ba thành phố còn lại đều tốt.
6 2
1 4
4 3
3 5
3 6
5 2
2
1 2 1 2 2
Cần r=2 công ty. Thành phố 3 có bậc 3 nên trở thành không tốt (hai đường màu 2); số thành phố không tốt là 1≤k=2. Với 1 công ty thì không thể giữ số thành phố không tốt ≤2.

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