Nhà hàng IT

Đề bài

Mô tả

Thành phố có n ngã tư được nối với nhau bởi n1 con đường hai chiều tạo thành một cây (đồ thị vô hướng, liên thông, không có chu trình).

Người ta muốn xây các nhà hàng của hai chuỗi khác nhau — gọi là chuỗi A và chuỗi B — tại các ngã tư. Việc xây phải thỏa mãn:

  • Mỗi ngã tư có nhiều nhất một nhà hàng.
  • Mỗi nhà hàng thuộc đúng một trong hai chuỗi A hoặc B.
  • Cả hai chuỗi AB đều phải có ít nhất một nhà hàng.
  • Không tồn tại hai ngã tư kề nhau (nối trực tiếp bằng một con đường) mà lại chứa nhà hàng của hai chuỗi khác nhau.

Gọi a là số nhà hàng của chuỗi Ab là số nhà hàng của chuỗi B. Cần chọn cách xây sao cho a+b đạt giá trị lớn nhất có thể.

Hãy tìm tất cả các cặp (a,b) hợp lệ đạt được tổng a+b lớn nhất, và in ra theo thứ tự tăng dần của a.

Dữ liệu vào

  • Dòng đầu chứa số nguyên n — số ngã tư.
  • n1 dòng tiếp theo, mỗi dòng chứa hai số nguyên xi,yi (1xi,yin) mô tả một con đường nối hai ngã tư xiyi.

Dữ liệu bảo đảm đồ thị được cho là một cây có n đỉnh.

Dữ liệu ra

  • Dòng đầu in số nguyên z — số cặp (a,b) tìm được.
  • z dòng tiếp theo, mỗi dòng in hai số ab theo thứ tự a tăng dần.

Ràng buộc

  • 3n5000

Ví dụ

Input Output Giải thích
5
1 2
2 3
3 4
4 5
3
1 3
2 2
3 1
Cây là đường thẳng 12345. Một trong các cách đạt (2,2): đặt A tại ngã tư 1,2; đặt B tại ngã tư 4,5; ngã tư 3 để trống.
10
1 2
2 3
3 4
5 6
6 7
7 4
8 9
9 10
10 4
6
1 8
2 7
3 6
6 3
7 2
8 1
Đỉnh 4 là gốc của ba nhánh dài 3: 1234, 5674, 89104. Có thể đặt A trên trọn một nhánh (3 đỉnh) và B trên trọn hai nhánh còn lại (6 đỉnh) — nếu 4 để trống, không có cặp đỉnh kề khác chuỗi.

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 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