| Codeforces Round 1076 (Div. 3) |
|---|
| Закончено |
Это интерактивная задача.
В этой интерактивной задаче вам дан ацикличный, связный и неориентированный граф, состоящий из $$$n$$$ вершин. Назовем путем между двумя вершинами $$$v$$$ и $$$u$$$ последовательность различных вершин $$$p_1, p_2,\dots p_k$$$ такую, что $$$p_1 = v$$$, $$$p_k = u$$$ и для всех $$$i$$$ ($$$1 \le i \lt k$$$) существует ребро между вершинами $$$p_i$$$ и $$$p_{i+1}$$$.
Есть скрытые вершины $$$x$$$ и $$$y$$$ (они могут совпадать). Вы можете делать следующие запросы:
Обратите внимание, что интерактор адаптивен, что означает, что скрытые вершины могут меняться в зависимости от ваших запросов, но не станут противоречить предыдущим запросам.
Каждый тест состоит из нескольких наборов входных данных. В первой строке находится одно целое число $$$t$$$ ($$$1\le t\le 10^4$$$) — количество наборов входных данных. Далее следует описание наборов входных данных.
Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$2\le n\le 2\cdot 10^5$$$) — количество вершин в графе.
Далее идут $$$n - 1$$$ строк, содержащие по два числа $$$v$$$, $$$u$$$ ($$$1\le v, u\le n$$$), означающие, что вершины $$$v$$$ и $$$u$$$ связаны ребром в графе.
Гарантируется, что сумма $$$n$$$ по всем наборам входных данных не превышает $$$2\cdot 10^5$$$.
Для нахождения одной любой вершины на пути вы можете использовать не более $$$\lfloor\frac{n}{2}\rfloor + 1$$$ запросов. Для этого используйте запросы вида «? $$$a$$$ $$$b$$$».
После каждого запроса считайте одно число, равное $$$0$$$ или $$$1$$$ — ответ на запрос.
Когда вы найдете одну из нужных вершин, выведите одну строку следующего формата: «! $$$v$$$» ($$$1\le v\le n$$$), где $$$v$$$ это вершина, которую вы нашли.
Если ваша программа сделает более $$$\lfloor\frac{n}{2}\rfloor + 1$$$ запросов для одного набора входных данных, то ответом на запрос будет $$$-1$$$, после получения такого ответа ваша программа должна немедленно завершиться, чтобы получить вердикт Неправильный ответ. Иначе она может получить любой другой вердикт.
После вывода запроса не забудьте вывести перевод строки и сбросить буфер вывода. В противном случае вы получите вердикт Решение «зависло». Для сброса буфера используйте:
3 2 1 2 1 3 1 2 1 3 0 0 4 1 2 2 3 2 4 0 1
? 1 1 ! 1 ? 1 1 ? 2 2 ! 3 ? 1 3 ? 4 4 ! 4
| Название |
|---|


