QOJ.ac

QOJ

Límite de tiempo: 2.0 s Límite de memoria: 2048 MB Puntuación total: 100 Dificultad: [mostrar] Comunicación
Estadísticas

Este es un problema de múltiples pasadas.

En los archivos digitales de Kivotos, Plana ha descubierto una colección de registros misteriosos conocidos como Registros Bitemporales. Cada registro consiste en $n$ entradas etiquetadas de $1$ a $n$ que forman un árbol enraizado. Sin embargo, las restricciones estructurales difieren dependiendo de si el flujo temporal es retrospectivo (Lógica A) o prospectivo (Lógica B):

  • Lógica A: El árbol está enraizado en la entrada $1$; cada otra entrada $i$ tiene un padre $p_i$ tal que $p_i < i$.
  • Lógica B: El árbol está enraizado en la entrada $n$; cada otra entrada $i$ tiene un padre $q_i$ tal que $q_i > i$.

Para analizar las propiedades estructurales, Plana define dos tipos de entradas:

  • Terminal: Una entrada que no sirve como padre de ninguna otra entrada.
  • Hub: Una entrada que sirve como padre de al menos otra entrada.

Plana observó una simetría perfecta llamada Resonancia Lógica. Esta propiedad se cumple entre un registro de Lógica A y un registro de Lógica B si y solo si:

Para todo $i$, la entrada $i$ es una Terminal en Lógica A $\iff$ la entrada $i$ es un Hub en Lógica B.

Plana ha demostrado matemáticamente que el número de registros de Lógica A y Lógica B válidos bajo esta restricción es idéntico. Ahora, te encarga diseñar un Protocolo de Traducción Universal —una biyección— para transformar un formato de registro en el otro.

Nota: tu solución será evaluada como un procedimiento interactivo en cualquiera de las ejecuciones.

Evaluación de la corrección

Tu solución se ejecuta dos veces en cada prueba. En la primera ejecución, tu solución debe convertir cada registro de Lógica A en un registro de Lógica B que satisfaga la condición de Resonancia Lógica. En la segunda ejecución, dado un registro de Lógica B producido por tu primera ejecución, tu solución debe recuperar exactamente el registro de Lógica A original.

La entrada de la segunda ejecución consiste en los mismos registros de Lógica B que tu salida de la primera ejecución, posiblemente en un orden diferente. Para cada registro de Lógica B de entrada en la segunda ejecución, debes generar su registro de Lógica A correspondiente. Tu solución se considera correcta si, para cada uno de esos registros de Lógica B, tu salida es exactamente el mismo registro de Lógica A que lo generó en la primera ejecución.

Se proporciona una herramienta de prueba para ayudarte a desarrollar y probar tu solución.

Entrada

La primera línea de la entrada contiene dos enteros $r$ ($r \in \{1, 2\}$) y $T$ ($1 \le T \le 10^5$), que representan el número de ejecución y el número de casos de prueba.

Para cada caso de prueba, la primera línea contiene un entero $n$ ($2 \le n \le 10^3$).

Si $r = 1$, la segunda línea contiene $n$ enteros $p_1, p_2, \dots, p_n$ que representan el registro de Lógica A. Se garantiza que $p_1 = 0$, y para $2 \le i \le n$, $1 \le p_i < i$ es la entrada a la que está unida la entrada $i$. Aquí usamos $0$ para denotar que una entrada no tiene padre (es decir, es la raíz).

De lo contrario, si $r = 2$, la segunda línea contiene $n$ enteros $q_1, q_2, \dots, q_n$ que representan el registro de Lógica B. Se garantiza que $q_n = 0$, y para $1 \le i \le n - 1$, $i < q_i \le n$ es la entrada a la que está unida la entrada $i$.

Se garantiza que la suma de $n^2$ sobre todos los casos de prueba no excede $10^7$.

Salida

Si $r = 1$, para cada caso de prueba, imprime $n$ enteros separados por un espacio, $q_1, q_2, \dots, q_n$, que representan el registro de Lógica B convertido. Debe cumplirse que $q_n = 0$, y para $1 \le i \le n - 1$, $i < q_i \le n$. La propiedad de Resonancia Lógica debe cumplirse: la entrada $i$ es una Terminal en Lógica A si y solo si la entrada $i$ es un Hub en Lógica B.

De lo contrario, si $r = 2$, para cada caso de prueba, imprime $n$ enteros separados por un espacio, $p_1, p_2, \dots, p_n$, que representan el registro de Lógica A restaurado.

Ejemplos

Entrada 1 (Ejecución 1)

1 3
4
0 1 1 2
4
0 1 2 1
4
0 1 1 1

Salida 1 (Ejecución 1)

3 3 4 0
3 4 4 0
2 3 4 0

Entrada 2 (Ejecución 2)

2 3
4
2 3 4 0
4
3 3 4 0
4
3 4 4 0

Salida 2 (Ejecución 2)

0 1 1 1
0 1 1 2
0 1 2 1

Nota

Explicación del Ejemplo 1: Se muestra a continuación una posible biyección válida.

Lógica A y Lógica B

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.