Universal Cup Judging System

Universal Cup

حد الوقت: 2 s حد الذاكرة: 1024 MB مجموع النقاط: 100 الصعوبة: [عرض]
الإحصائيات

Este es un problema interactivo.

El mar, nos volvemos a encontrar. ¡Espero que también seas feliz en las próximas vacaciones de verano! Hace mucho tiempo, Una y Kamome ya eran buenos amigos.

Les gustaba jugar juegos. La última vez, el juego inventado por Una fue resuelto fácilmente gracias a la excelente estrategia de Kamome. Esta vez, Una ha traído un nuevo juego.

Una está pensando en un árbol con $n$ nodos. Kamome puede hacer como máximo $n$ consultas: * Kamome puede decirle a Una una permutación $P_1, P_2, \dots, P_n$ (donde $0 \le P_i \le n-1$ y todos los $P_i$ son distintos). Entonces Una le dice a Kamome la longitud del diámetro ponderado del árbol cuando se asigna un peso $2^{P_i}$ al nodo $i$.

Pero a veces Kamome se da cuenta de que Una está causando problemas. Más específicamente, hay casos en los que, por más preguntas que se hagan, no se puede determinar el árbol con certeza. En tales casos, Kamome puede informar que no hay solución.

Interacción

Este es un problema interactivo. Después de cada salida, debes vaciar el búfer de salida. Para vaciar el búfer de salida, puedes usar:

  • C/C++: fflush(stdout) o cout.flush()
  • Java y Kotlin: System.out.flush()
  • Python: sys.stdout.flush()

Primero, debes leer el número de casos de prueba $T$ ($1 < T < 10^4$). Para cada caso de prueba, debes leer el tamaño del árbol $n$ ($2 \le n \le 100$, $\sum n^2 < 10^6$).

Para hacer una consulta, debes imprimir una línea en el formato "? $P_1 P_2 \dots P_n$" (donde $0 \le P_i \le n-1$ y $P_i \ne P_j$ para $1 < i < j \le n$). Luego, lees una cadena de $n$ caracteres que representa el diámetro ponderado del árbol en su representación binaria. Si la consulta no es válida, o si haces más de $n$ consultas en un caso de prueba, el juez imprime -1. Si lees -1, debes terminar inmediatamente para evitar un comportamiento indefinido.

Si determinas que es imposible determinar el árbol de manera única, debes imprimir "! NO". De lo contrario, debes imprimir una línea en el formato "! YES $u_1 v_1 u_2 v_2 \dots u_{n-1} v_{n-1}$", indicando que el árbol contiene las aristas $(u_i, v_i)$. Las aristas se pueden imprimir en cualquier orden.

Luego, lees la palabra "OK" o "WA", que indica si tu respuesta es correcta o no. Si lees "WA", debes terminar inmediatamente para evitar un comportamiento indefinido. Si el árbol no es determinable y sin embargo imprimes YES, incluso si tu respuesta es correcta, Una piensa que estás haciendo trampa, por lo que tu respuesta se considera incorrecta.

El juez no es adaptativo, por lo que la respuesta no cambia después de una consulta.

Ejemplos

Entrada 1

2
4
1110
1110
OK
3
111
OK

Salida 1

? 0 1 2 3
? 2 1 0 3
! YES 1 4 2 4 3 4
? 0 1 2
! NO

Nota

Se proporciona una herramienta de prueba para que los participantes desarrollen y prueben sus soluciones. Esta herramienta se puede descargar en los archivos adjuntos. Ejecutar la herramienta con la opción "-h" explica su uso. La herramienta de prueba solo implementa algunas funciones del juez real y solo implementa algunos escenarios de prueba.

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.