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

Đường kính của cây

Đề bài

Mô tả

Đây là bài toán tương tác.

Hệ thống giữ bí mật một cây có trọng số gồm n đỉnh được đánh số từ 1 đến nn1 cạnh. Mỗi cạnh có trọng số là một số nguyên dương không vượt quá 100. Khoảng cách giữa hai đỉnh là tổng trọng số các cạnh trên đường đi duy nhất nối chúng.

Nhiệm vụ của bạn là tìm đường kính của cây — tức khoảng cách lớn nhất giữa một cặp đỉnh bất kỳ.

Bạn không được cho biết cây, nhưng có thể đặt câu hỏi. Mỗi câu hỏi gồm hai tập đỉnh khác rỗng và rời nhau pq; hệ thống trả về khoảng cách lớn nhất giữa một đỉnh thuộc p và một đỉnh thuộc q, tức maxxp,yqdist(x,y). Bạn được hỏi không quá 9 câu hỏi cho mỗi cây.

Dữ liệu vào

Đầu tiên hệ thống in ra một dòng chứa số nguyên t — số lượng bộ dữ liệu. Sau đó là t bộ dữ liệu. Với mỗi bộ, hệ thống in ra một dòng chứa số nguyên n — số đỉnh của cây hiện tại.

Giao thức tương tác

Với mỗi cây, sau khi đọc n bạn thực hiện:

  • Để hỏi, in ra một dòng k_1 k_2 a_1 a_2 ... a_{k_1} b_1 b_2 ... b_{k_2}, trong đó k1,k21k1+k2n. Đây là tập p={a1,,ak1} và tập q={b1,,bk2}; hai tập phải rời nhau. Hệ thống trả lời bằng một số nguyên là khoảng cách lớn nhất giữa hai tập.
  • Khi đã biết đáp án, in ra một dòng -1 d, trong đó d là đường kính của cây, rồi chuyển sang cây tiếp theo (hoặc kết thúc nếu đây là cây cuối). Dòng này không tính là một câu hỏi.

Nếu bạn hỏi quá 9 câu hỏi cho một cây, đặt câu hỏi không hợp lệ, hoặc đưa ra đáp án sai, bạn sẽ nhận kết quả sai.

Quan trọng: Sau mỗi lần in ra, bạn phải flush output:

  • C++: cout << endl; hoặc cout.flush();
  • Python: print(..., flush=True)

Ràng buộc

  • 1t1000
  • 2n100
  • Trọng số mỗi cạnh là số nguyên trong đoạn [1,100].

Ví dụ

Chương trình Hệ thống Giải thích
2 t=2 bộ dữ liệu.
5 Cây thứ nhất có n=5 đỉnh (các cạnh: 12 trọng số 3, 23 trọng số 4, 24 trọng số 5, 45 trọng số 1).
2 3 2 4 1 3 5 9 p={2,4}, q={1,3,5}; khoảng cách lớn nhất là dist(4,3)=9.
2 3 2 3 1 4 5 10 p={2,3}, q={1,4,5}; lớn nhất là dist(3,5)=10.
-1 10 Báo đường kính cây thứ nhất là 10.
2 Cây thứ hai có n=2 đỉnh (cạnh 12 trọng số 99).
1 1 1 2 99 p={1}, q={2}; khoảng cách là 99.
-1 99 Báo đường kính cây thứ hai là 99.

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