QOJ.ac

QOJ

حد الوقت: 10 s حد الذاكرة: 256 MB مجموع النقاط: 100 قابلة للهجوم ✓

#1421. Astronavi

الإحصائيات

Lontano nell'universo, c'è una galassia con $N$ pianeti avanzati. I pianeti sono numerati da 1 a $N$. Ogni pianeta gestisce un'astronave. Un'astronave si trova o nello stato di utilizzo per viaggiare verso un altro pianeta, oppure nello stato di inutilizzo. Quando l'astronave gestita dal pianeta $a$ si trova nello stato di utilizzo per viaggiare verso il pianeta $b$, l'astronave viaggia avanti e indietro tra il pianeta $a$ e il pianeta $b$ molte volte. Quando l'astronave viaggia dal pianeta $a$ al pianeta $b$, i passeggeri comuni possono salire a bordo dell'astronave per viaggiare dal pianeta $a$ al pianeta $b$. Tuttavia, quando l'astronave ritorna dal pianeta $b$ al pianeta $a$, i passeggeri comuni non possono salire a bordo a causa di problemi di carburante o vincoli di carico. Inoltre, quando l'astronave gestita dal pianeta $a$ si trova nello stato di inutilizzo, rimane in attesa sul pianeta $a$.

Attualmente, tutte le astronavi si trovano nello stato di inutilizzo. È stato stabilito un programma per i futuri cambiamenti di stato delle astronavi. I cambiamenti di stato sono dei seguenti tipi:

  • Portare l'astronave gestita dal pianeta $a$ (che attualmente si trova nello stato di inutilizzo) nello stato di utilizzo per viaggiare verso il pianeta $b$. Si noti che ciò avviene solo quando per i passeggeri comuni è impossibile viaggiare dal pianeta $b$ al pianeta $a$ prendendo più astronavi in successione.
  • Portare l'astronave gestita dal pianeta $a$ (che attualmente si trova nello stato di utilizzo) nello stato di inutilizzo.

Due persone che progettano di viaggiare attraverso questa galassia hanno preparato diverse domande della forma seguente per pianificare il loro incontro:

  • In un certo istante del programma, supponiamo che una persona si trovi sul pianeta $a$ e l'altra sul pianeta $b$. Possono le due persone incontrarsi utilizzando le astronavi come passeggeri comuni? Inoltre, se possono incontrarsi, su quale pianeta dovrebbero incontrarsi affinché il numero complessivo di utilizzi di un'astronave sia minimo? Cioè, esiste un pianeta $c$ tale che i passeggeri comuni possano viaggiare dal pianeta $a$ al pianeta $c$ e dal pianeta $b$ al pianeta $c$ prendendo più astronavi? Se un tale pianeta esiste, quale pianeta $c$ minimizza la somma tra il numero di volte in cui viene usata un'astronave per viaggiare dal pianeta $a$ al pianeta $c$ e il numero di volte in cui viene usata un'astronave per viaggiare dal pianeta $b$ al pianeta $c$?

A te, eccellente programmatore, è stato chiesto di trovare le risposte a tutte le loro domande.

Dati di input

Leggi i seguenti dati dallo standard input:

  • La prima riga contiene due interi $N$ e $Q$, separati da uno spazio, che rappresentano il numero di pianeti $N$ e il numero totale di cambiamenti di stato e domande $Q$.
  • Le successive $Q$ righe rappresentano i cambiamenti di stato e le domande in ordine cronologico. La $i$-esima riga ($1 \le i \le Q$) contiene due o tre interi separati da spazi. Sia $T_i$ il primo intero. Esso assume uno dei seguenti valori:

(i) Se $T_i = 1$: Questa riga contiene gli interi $T_i, A_i, B_i$, che rappresentano il seguente cambiamento di stato: portare l'astronave gestita dal pianeta $A_i$ nello stato di utilizzo per viaggiare verso il pianeta $B_i$. È garantito che $1 \le A_i \le N$, $1 \le B_i \le N$, $A_i \neq B_i$, che l'astronave gestita dal pianeta $A_i$ si trova attualmente nello stato di inutilizzo e che, in questo momento, è impossibile per i passeggeri comuni viaggiare dal pianeta $B_i$ al pianeta $A_i$ prendendo più astronavi.

(ii) Se $T_i = 2$: Questa riga contiene gli interi $T_i, A_i$, che rappresentano il seguente cambiamento di stato: portare l'astronave gestita dal pianeta $A_i$ nello stato di inutilizzo. È garantito che $1 \le A_i \le N$ e che l'astronave gestita dal pianeta $A_i$ si trova attualmente nello stato di utilizzo.

(iii) Se $T_i = 3$: Questa riga contiene gli interi $T_i, A_i, B_i$, che rappresentano la seguente domanda: in questo momento, se una persona si trova sul pianeta $A_i$ e l'altra si trova sul pianeta $B_i$, possono incontrarsi utilizzando le astronavi come passeggeri comuni? Se possono incontrarsi, quale pianeta $c$ minimizza il numero di utilizzi di astronavi? È garantito che $1 \le A_i \le N$, $1 \le B_i \le N$, $A_i \neq B_i$.

Dati di output

Per ciascuna domanda, stampa quanto segue sullo standard output su una nuova riga:

  • Se possono incontrarsi, il numero del pianeta in cui dovrebbero incontrarsi per minimizzare il numero di utilizzi di astronavi.
  • Se non possono incontrarsi, l'intero -1.

Limiti

Tutti i dati di input soddisfano le seguenti condizioni:

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

Sottoproblemi

Sottoproblema 1 [10 punti]

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

Sottoproblema 2 [30 punti]

  • $T_i \neq 2$ ($1 \le i \le Q$).

Sottoproblema 3 [60 punti]

  • Nessuna limitazione aggiuntiva.

Esempi

Input 1

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

Output 1

-1
4

Nota 1

In questo esempio, i cambiamenti di stato e le domande avvengono nel seguente ordine:

  • L'astronave gestita dal pianeta 2 entra nello stato di utilizzo per viaggiare verso il pianeta 4.
  • A questo punto, se due persone si trovano sul pianeta 2 e sul pianeta 6, non possono incontrarsi, quindi si stampa -1.
  • L'astronave gestita dal pianeta 4 entra nello stato di utilizzo per viaggiare verso il pianeta 3.
  • L'astronave gestita dal pianeta 6 entra nello stato di utilizzo per viaggiare verso il pianeta 4.
  • A questo punto, se due persone si trovano sul pianeta 2 e sul pianeta 6, possono incontrarsi sul pianeta 3 oppure sul pianeta 4. Per minimizzare il numero di utilizzi di astronavi, dovrebbero incontrarsi sul pianeta 4, quindi si stampa 4.

Input 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

Output 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.