| Осенний кубок МИФИ 2025 |
|---|
| Закончено |
Это интерактивная задача
Вы попали в группу исследователей, которые занимаются разработкой нейронных сетей. Нейронная сеть представляется в виде графа, в котором вершины соответствуют нейронам, а рёбра – соединениям между ними. Для того чтобы продемонстрировать ваши навыки работы с графами, вам предстоит решить следующую задачу.
Дан некоторый направленный граф на $$$n$$$ вершинах без петель и кратных рёбер, однако вы не знаете структуру этого графа. Вам нужно найти лист в этом графе или определить, что в нём нет ни одного листа (листом называется вершина, соединённая ровно с одной другой вершиной без учёта ориентации рёбер).
Для того чтобы получить о нём информацию, вы можете делать запросы. В каждом запросе вы можете выбрать множества $$$S, T$$$, которые являются подмножествами {$$$1, 2, \ldots n$$$}. В ответ вы получите количество рёбер, начинающихся в одной из вершин множества $$$S$$$ и заканчивающихся в одной из вершин множества $$$T$$$(учитывая ориентацию рёбер). Множества $$$S$$$ и $$$T$$$ могут пересекаться.
Вы можете задать не более $$$n$$$ запросов. В любой момент вы можете вывести ответ на задачу – индекс вершины, которая является листом, или $$$-1$$$, если в графе нет ни одного листа.
В первой строке вводится число $$$t$$$ ($$$1 \le t \le 100$$$) – количество тестов.
В очередном тесте вводится число $$$n$$$ ($$$1 \le n \le 100$$$) – количество вершин в графе. Гарантируется, что сумма $$$n$$$ по всем тестовым данным не превосходит $$$1000$$$.
Далее ваша программа может выбрать множества $$$S$$$ = {$$$s_1, s_2, \ldots, s_k$$$} и $$$T$$$ = {$$$t_1, t_2, \ldots, t_r$$$} и вывести «? $$$k$$$ $$$s_1$$$ $$$s_2 \ldots s_k$$$ $$$r$$$ $$$t_1$$$ $$$t_2 \ldots t_r$$$». После этого вы получите количество рёбер, начинающихся в одной из вершин множества $$$S$$$ и заканчивающихся в одной из вершин множества $$$T$$$. Обратите внимание, что при выполнении запроса после последнего числа не должно быть лишних пробелов.
Как только программа готова дать ответ, вы можете вывести «! $$$x$$$», где $$$x$$$ равен $$$-1$$$, если листа не существует, или индексу листа в противном случае (индексация начинается с $$$1$$$). Далее программа должна приступить к обработке следующего теста или завершиться, если это был последний тест.
Если вы сделаете более $$$n$$$ запросов во время взаимодействия, ваша программа должна немедленно завершиться, и вы получите вердикт Неправильный ответ. В противном случае вы можете получить произвольный вердикт.
После вывода каждого запроса не забудьте вывести перевод строки и сбросить буфер вывода. В противном случае вы получите вердикт Решение зависло. Для этого используйте:
2 3 1 2 2
? 1 1 2 2 3 ? 2 1 2 2 2 3 ! 1 ! -1
В первом примере в графе всего 2 ребра – 1→2 и 2→3.
Во втором примере граф пустой.
Пример дан для пояснения взаимодействия с интерактором, он не гарантирует возможность нахождения ответа по данным запросам.
| Название |
|---|


