trang chủ / bài tập / roadcomp

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

Đề bài

Mô tả

Một đất nước gồm n thành phố và n1 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 nk — số thành phố và số thành phố không tốt tối đa được phép.
  • n1 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ố xiyi.

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 n1 số nguyên c1,c2,,cn1 (1cir), 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

  • 2n2·105
  • 0kn1
  • 1xi,yin, 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à 1k=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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0