Se consideră un graf neorientat având iniţial N
noduri izolate numerotate de la 1
la N
(deci graful are iniţial 0
muchii). Asupra acestui graf se pot efectua 4
tipuri de operaţii, precum adăugarea unei muchii noi, ştergerea unei muchii şi două tipuri de interogări. Există însă o constrângere: la orice moment de timp, componentele conexe ale grafului trebuie să aibă structura unui drum (adică fiecare nod are cel mult 2
vecini şi graful nu conţine cicluri). Cele 4
tipuri de operaţii sunt următoarele:
- Tipul
1
: Adaugă o muchie între nodurilei
şij
. Această operaţie se efectuează cu succes dacă nu încalcă constrâgerea. În caz contrar, operaţia nu va fi efectuată. - Tipul
2
: Elimină muchia dintre nodurilei
şij
. Această operaţie se efectuează cu succes dacă există muchie între nodurilei
şij
. - Tipul
3
: Determină toate nodurile aflate la distanţăD
de noduli
. Distanţa dintre două noduri este egală cu numărul minim de muchii al unui drum în graf ce uneşte cele două noduri. Din cauza constrângerii, pot exista cel mult două noduri la distanţăD
faţă de un alt nod. - Tipul
4
: Determină nodurile-capăt ale drumului (componentei conexe) din care face parte noduli
(i
ar putea fi chiar unul din capete sau singurul capăt, dacă el este un nod izolat).
Cerinţă
Dându-se o secvenţă de M
operaţii şi pornind de la un graf fără nicio muchie, afişaţi rezultatul fiecărei operaţii din secvenţă (în ordinea în care acestea sunt date).
Date de intrare
Fişierul de intrare drumuri.in
conţine:
- Pe prima linie numerele
N
şiM
separate, printr-un spaţiu. - Pe fiecare din următoarele
M
linii este descrisă o operaţie, printr-o succesiune de numere întregi separate prin spaţii. Primul număr de pe linie reprezintă tipul operaţiei (de la1
la4
). - Dacă operaţia este de tipul
1
, atunci urmează două numere întregii
şij
, având semnificaţia că se va adăuga o muchie între nodurilei
şij
din graf (dacă nu se încalcă constrângerea). - Dacă operaţia este de tipul
2
, atunci urmează două numere întregii
şij
, având semnificaţia că se va şterge muchia dintre nodurilei
şij
din graf (dacă există). - Dacă operaţia este de tipul
3
, atunci urmează două numere întregii
şiD
, având semnificaţia că se doreşte determinarea tuturor nodurilor aflate la distanţă exactD
de noduli
. - Dacă operaţia este de tipul
4
, atunci urmează un singur număr întregi
, având semnificaţia că dorim să determinăm capetele drumului din care face parte noduli
.
Date de ieşire
Fişierul de ieşire drumuri.out
va conţine M
linii. A i
-a linie va conţine rezultatul celei de-a i
-a operaţii din fişierul de intrare. Dacă operaţia este de tipul 1
sau 2
, rezultatul său este 1
, dacă operaţia s-a efectuat cu succes, sau 0
, în caz contrar. În cazul operaţiilor de tipul 3
şi 4
, rezultatul constă dintr-o mulţime de noduri. Afişaţi mai întâi numărul de noduri din mulţime, apoi, pe aceeaşi linie, elementele mulţimii în ordine crescătoare.
Restricţii şi precizări
1 ≤ N ≤ 40 000
1 ≤ M ≤ 400 000
0 ≤ D ≤ N-1
1 ≤ i, j ≤ N
- Nu se vor adăuga muchii de la un nod la el însuşi.
- Pentru
40%
din testeN ≤ 5000
şiM ≤ 20 000
.
Exemplu
drumuri.in
6 14
1 2 4
1 6 5
4 1
1 1 5
1 1 6
4 5
3 6 1
4 4
4 3
3 3 1
3 3 0
2 3 2
2 5 6
3 6 1
drumuri.out
1
1
1 1
1
0
2 1 6
1 5
2 2 4
1 3
0
1 3
0
1
0
Explicaţii
Graful are N=6
noduri şi se dau M=14
operaţii:
- Se adaugă muchie între nodurile
2
şi4
cu succes. - Se adaugă muchie între nodurile
6
şi5
cu succes. - Nodul
1
face parte dintr-un drum cu un singur nod:1
. - Se adaugă muchie între nodurile
1
şi5
cu succes. - Adăugarea muchiei între nodurile
1
şi6
eşuează, deoarece s-ar forma un ciclu în graf. - Nodul
5
face parte dintr-un drum cu2
capete:1
şi6
. - Există un singur nod la distanţă
1
de nodul6
: nodul5
. - Nodul
4
face parte dintr-un drum cu2
capete:2
şi4
. - Nodul
3
face parte dintr-un drum cu un singur nod:3
. - Există zero noduri la distanţă
1
de nodul3
. - Există un singur nod la distanţă
0
de nodul3
: nodul3
. - Ştergerea muchiei dintre nodurile
3
şi2
eşuează, deoarece această muchie nu există. - Ştergerea muchiei dintre nodurile
5
şi6
se efectuează cu succes. - Există zero noduri la distanţă
1
de nodul6
.