CF1146C.Tree Diameter

普及/提高-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

There is a weighted tree with nn nodes and n1n-1 edges. The nodes are conveniently labeled from 11 to nn . The weights are positive integers at most 100100 . Define the distance between two nodes to be the sum of edges on the unique path between the nodes. You would like to find the diameter of the tree. Diameter is the maximum distance between a pair of nodes.

Unfortunately, the tree isn't given to you, but you can ask some questions about it. In one question, you can specify two nonempty disjoint sets of nodes pp and qq , and the judge will return the maximum distance between a node in pp and a node in qq . In the words, maximum distance between xx and yy , where xpx \in p and yqy \in q . After asking not more than 99 questions, you must report the maximum distance between any pair of nodes.

输入格式

输出格式

Each test contains multiple test cases. The first line contains the number of test cases tt ( 1t10001 \le t \le 1\,000 ). Description of the test cases follows.

The first line of each test case contains an integer nn ( 2n1002 \leq n \leq 100 ) — the number of nodes in the tree.

To ask a question, print " k1 k2 a1 a2  ak1 b1 b2  bk2k_1\ k_2\ a_1\ a_2\ \ldots\ a_{k_1}\ b_1\ b_2\ \ldots\ b_{k_2} " (k1,k21(k_1, k_2 \geq 1 and k1+k2nk_1+k_2 \leq n ). These two sets must be nonempty and disjoint. The judge will respond with a single integer maxp,qdist(ap,bq)\max_{p,q} dist(a_p, b_q) . If you ever get a result of 1-1 (because you printed an invalid query), exit immediately to avoid getting other verdicts.

After printing a query do not forget to output end of line and flush the output. Otherwise, you will get Idleness limit exceeded. To do this, use:

  • fflush(stdout) or cout.flush() in C++;
  • System.out.flush() in Java;
  • flush(output) in Pascal;
  • stdout.flush() in Python;
  • see documentation for other languages.

When you are ready to answer, print " 1 d-1\ d ", where dd is the maximum shortest distance over all pairs of nodes.

You can only ask at most 99 questions per test case.

Hack Format

To hack, use the following format. Note that you can only hack with one test case.

The first line should contain a single integer tt ( t=1t=1 ).

The second line should contain a single integer nn ( 2n1002 \leq n \leq 100 ).

Each of the next n1n-1 lines should contain three integers ai,bi,cia_i, b_i, c_i ( 1ai,bin1\leq a_i, b_i\leq n , 1ci1001 \leq c_i \leq 100 ). This denotes an undirected edge between nodes aia_i and bib_i with weight cic_i . These edges must form a tree.

输入输出样例

  • 输入#1

    2
    5
    9
    6
    10
    9
    10
    2
    99
    

    输出#1

    1 4 1 2 3 4 5
    1 4 2 3 4 5 1
    1 4 3 4 5 1 2
    1 4 4 5 1 2 3
    1 4 5 1 2 3 4
    -1 10
    1 1 1 2
    -1 99

说明/提示

In the first example, the first tree looks as follows:

In the first question, we have p=1p = {1} , and q=2,3,4,5q = {2, 3, 4, 5} . The maximum distance between a node in pp and a node in qq is 99 (the distance between nodes 11 and 55 ).

The second tree is a tree with two nodes with an edge with weight 9999 between them.

首页