Ozon Tech Challenge 2020 (Div.1 + Div.2, Rated, T-shirts + prizes!)
D
Kuroni and the Celebration
Codeforces
1900
原题
← CE →
翻译中…

This is an interactive problem.

翻译中…

After getting AC after 13 Time Limit Exceeded verdicts on a geometry problem, Kuroni went to an Italian restaurant to celebrate this holy achievement. Unfortunately, the excess sauce disoriented him, and he's now lost!

翻译中…

The United States of America can be modeled as a tree (why though) with $n$ vertices. The tree is rooted at vertex $r$, wherein lies Kuroni's hotel.

翻译中…

Kuroni has a phone app designed to help him in such emergency cases. To use the app, he has to input two vertices $u$ and $v$, and it'll return a vertex $w$, which is the lowest common ancestor of those two vertices.

翻译中…

However, since the phone's battery has been almost drained out from live-streaming Kuroni's celebration party, he could only use the app at most $\lfloor \frac{n}{2} \rfloor$ times. After that, the phone would die and there will be nothing left to help our dear friend! :(

翻译中…

As the night is cold and dark, Kuroni needs to get back, so that he can reunite with his comfy bed and pillow(s). Can you help him figure out his hotel's location?

翻译中…

Interaction

翻译中…

The interaction starts with reading a single integer $n$ ($2 \le n \le 1000$), the number of vertices of the tree.

翻译中…

Then you will read $n-1$ lines, the $i$-th of them has two integers $x_i$ and $y_i$ ($1 \le x_i, y_i \le n$, $x_i \ne y_i$), denoting there is an edge connecting vertices $x_i$ and $y_i$. It is guaranteed that the edges will form a tree.

翻译中…

Then you can make queries of type "? u v" ($1 \le u, v \le n$) to find the lowest common ancestor of vertex $u$ and $v$.

翻译中…

After the query, read the result $w$ as an integer.

翻译中…

In case your query is invalid or you asked more than $\lfloor \frac{n}{2} \rfloor$ queries, the program will print $-1$ and will finish interaction. You will receive a Wrong answer verdict. Make sure to exit immediately to avoid getting other verdicts.

翻译中…

When you find out the vertex $r$, print "! $r$" and quit after that. This query does not count towards the $\lfloor \frac{n}{2} \rfloor$ limit.

翻译中…

Note that the tree is fixed beforehand and will not change during the queries, i.e. the interactor is not adaptive.

翻译中…

After printing any query do not forget to print end of line and flush the output. Otherwise, you might 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 the documentation for other languages.
翻译中…

Hacks

翻译中…

To hack, use the following format:

翻译中…

The first line should contain two integers $n$ and $r$ ($2 \le n \le 1000$, $1 \le r \le n$), denoting the number of vertices and the vertex with Kuroni's hotel.

翻译中…

The $i$-th of the next $n-1$ lines should contain two integers $x_i$ and $y_i$ ($1 \le x_i, y_i \le n$) — denoting there is an edge connecting vertex $x_i$ and $y_i$.

翻译中…

The edges presented should form a tree.

翻译中…

Note

翻译中…

Note that the example interaction contains extra empty lines so that it's easier to read. The real interaction doesn't contain any empty lines and you shouldn't print any extra empty lines as well.

翻译中…

The image below demonstrates the tree in the sample test:

翻译中…

image

翻译中…

样例

Input #1
6
1 4
4 2
5 3
6 3
2 3

3

4

4
Output #1
? 5 6

? 3 1

? 1 2

! 4
InputCopy OutputCopy
题目信息
题号
1305D
时间限制
1 s
内存限制
256 MB
标签
构造
DFS 及类似
交互题
树

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。