QOJ.ac

QOJ

Limite de temps : 10 s Limite de mémoire : 256 MB Points totaux : 100 Hackable ✓

#1421. Naves espaciales

Statistiques

En una galaxia muy lejana hay $N$ estrellas con civilizaciones avanzadas, numeradas del $1$ al $N$. Cada estrella administra una nave espacial. Una nave está en uno de dos estados: en uso para viajar a otra estrella, o sin usar. Si la nave administrada por la estrella $a$ está en uso para viajar a la estrella $b$, realiza viajes de ida y vuelta entre $a$ y $b$ repetidamente. Cuando va de $a$ a $b$, los pasajeros ordinarios pueden subir a ella y viajar de $a$ a $b$. Sin embargo, cuando regresa de $b$ a $a$, no pueden subir, por razones como el combustible o el transporte de carga. Cuando la nave administrada por $a$ está sin usar, permanece en $a$.

Actualmente, todas las naves están sin usar. Ya se ha decidido el calendario de los futuros cambios de estado de las naves. Cada cambio es de uno de los siguientes tipos.

  • Poner en uso la nave sin usar administrada por la estrella $a$ para viajar a la estrella $b$. Esto solo se hace cuando un pasajero ordinario no puede viajar de $b$ a $a$ tomando naves espaciales sucesivamente.
  • Dejar sin usar la nave que está en uso y que administra la estrella $a$.

Dos personas que planean viajar por esta galaxia han preparado varias preguntas del siguiente tipo para organizar sus encuentros.

  • Si, en cierto momento del calendario, una persona está en la estrella $a$ y la otra en la estrella $b$, ¿pueden reunirse utilizando naves espaciales como pasajeros ordinarios? Si pueden, ¿en qué estrella deben reunirse para minimizar el número de viajes en nave espacial? Es decir, ¿existe una estrella $c$ a la que un pasajero ordinario pueda llegar tomando naves sucesivamente tanto desde $a$ como desde $b$? Si existe, ¿qué estrella $c$ minimiza la suma del número de viajes necesarios para ir de $a$ a $c$ y del número de viajes necesarios para ir de $b$ a $c$?

Como excelente programador, te han pedido que respondas todas sus preguntas.

Tarea

Escribe un programa que responda las preguntas, dados los cambios de estado de las naves y las preguntas en orden cronológico.

Entrada

Lee los siguientes datos de la entrada estándar.

  • La primera línea contiene los enteros $N,Q$, separados por un espacio. Indican que hay $N$ estrellas y que la suma del número de cambios de estado y del número de preguntas es $Q$.
  • Las siguientes $Q$ líneas describen los cambios de estado y las preguntas en orden cronológico. La línea $i$ ($1 \le i \le Q$) contiene dos o tres enteros separados por espacios. Si el primero es $T_i$, se da uno de los siguientes casos.

Caso (i): $T_i=1$

La línea contiene los enteros $T_i,A_i,B_i$ y representa el siguiente cambio de estado: poner en uso la nave administrada por la estrella $A_i$ para viajar a la estrella $B_i$.

Se garantiza que $1 \le A_i \le N$, $1 \le B_i \le N$ y $A_i \ne B_i$; que en ese momento la nave administrada por $A_i$ está sin usar; y que en ese momento un pasajero ordinario no puede viajar de $B_i$ a $A_i$ tomando naves espaciales sucesivamente.

Caso (ii): $T_i=2$

La línea contiene los enteros $T_i,A_i$ y representa el siguiente cambio de estado: dejar sin usar la nave administrada por la estrella $A_i$.

Se garantiza que $1 \le A_i \le N$ y que en ese momento la nave administrada por $A_i$ está en uso.

Caso (iii): $T_i=3$

La línea contiene los enteros $T_i,A_i,B_i$ y representa la siguiente pregunta: si en ese momento una persona está en la estrella $A_i$ y la otra en la estrella $B_i$, ¿pueden reunirse utilizando naves espaciales como pasajeros ordinarios? Si pueden, ¿en qué estrella deben reunirse para minimizar el número de viajes en nave espacial?

Se garantiza que $1 \le A_i \le N$, $1 \le B_i \le N$ y $A_i \ne B_i$.

Salida

Para cada pregunta, escribe en la salida estándar, en orden y en una línea independiente:

  • Si pueden reunirse, el número de la estrella en la que deben reunirse para minimizar el número de viajes en nave espacial.
  • Si no pueden reunirse, el entero $-1$.

Restricciones

Todos los datos de entrada cumplen las siguientes condiciones.

  • $2 \le N \le 1\,000\,000$.
  • $1 \le Q \le 1\,000\,000$.

Subtareas

Subtarea 1 [10 puntos]

Se cumplen las siguientes condiciones.

  • $N \le 5\,000$.
  • $Q \le 5\,000$.

Subtarea 2 [30 puntos]

  • Se cumple $T_i \ne 2$ ($1 \le i \le Q$).

Subtarea 3 [60 puntos]

No hay restricciones adicionales.

Ejemplos

Entrada 1

6 5
1 2 4
3 2 6
1 4 3
1 6 4
3 2 6

Salida 1

-1
4

Nota

En este ejemplo, los cambios de estado y las preguntas son los siguientes, en este orden.

  • La nave administrada por la estrella 2 se pone en uso para viajar a la estrella 4.
  • Si en ese momento las dos personas están en las estrellas 2 y 6, no pueden reunirse, por lo que se escribe $-1$.
  • La nave administrada por la estrella 4 se pone en uso para viajar a la estrella 3.
  • La nave administrada por la estrella 6 se pone en uso para viajar a la estrella 4.
  • Si en ese momento las dos personas están en las estrellas 2 y 6, pueden reunirse en la estrella 3 o en la estrella 4. Para minimizar el número de viajes en nave espacial deben reunirse en la estrella 4, por lo que se escribe 4.

Entrada 2

8 36
1 1 2
1 6 5
1 7 8
3 5 6
1 5 4
1 8 1
3 7 2
3 3 8
3 1 8
1 3 2
1 4 1
3 8 5
3 4 3
2 4
3 6 8
1 2 5
3 6 8
2 8
3 1 4
3 6 8
3 6 3
2 3
3 1 2
1 4 3
3 2 6
1 8 3
3 1 7
3 1 6
3 5 4
2 2
2 5
1 3 6
1 2 7
3 1 4
3 1 5
3 6 7

Salida 2

5
2
-1
1
1
2
-1
5
4
-1
5
2
5
3
5
4
3
5
6

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

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.