Fişierul intrare/ieşire:atena.in, atena.outSursăTabăra ICHB 2012, Ziua 2, Grupa 2
AutorDan Constantin SpatarelAdăugată despatarelDan-Constantin Spatarel spatarel
Timp execuţie pe test0.2 secLimită de memorie16384 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Atena

În Grecia antică, reţeaua stradală a oricărui oraş era formată din intersecţii legate prin drumuri bidirecţionale, construite în aşa fel încât din orice intersecţie să se poată ajunge în oricare altă intersecţie, direct sau indirect, trecând prin alte intersecţii. De asemenea, între oricare două intersecţii ale unui oraş exista cel mult un drum direct şi nu existau drumuri de la o intersecţie la ea însăşi.

Se ştie că în acele vremuri, reţeaua stradală a oraşului Atena avea N1 intersecţii, legate prin M1 drumuri bidirecţionale, în timp ce reţeaua stradală a oraşului Sparta avea N2 intersecţii, legate prin M2 drumuri bidirecţionale. Intersecţiile din Atena se consideră numerotate cu numere de la 1 la N1, în timp ce intersecţiile din Sparta se consideră numerotate cu numere de la N1 + 1 la N1 + N2.

Pericle, regele Atenei, a decis să afle în ce măsură reţeaua de străzi a Spartei este asemănătoare cu reţeaua de străzi a oraşului Atena. În acest scop, el i-a cerut unuia dintre matematicienii atenieni, Parmenide, să afle dacă reţeaua de străzi a Spartei este inclusă în reţeaua de străzi a Atenei.

Pericle consideră că reţeaua de străzi a Spartei este inclusă în reţeaua de străzi a Atenei dacă şi numai dacă există submulţimi disjuncte două câte două nevide A1, A2, ..., AN2 ale mulţimii { 1, 2, ..., N1 } cu proprietatea că pentru orice drum între două intersecţii N1 + a şi N1 + b în Sparta există un drum între o intersecţie c şi o intersecţie d în Atena, cu c din Aa, d din Ab şi 1 <= a, b <= N2, 1 <= c, d <= N1.

Din păcate Parmenide a murit în timp ce încerca să ajungă la Congresul de Matematică Aplicată din Siracuza, aşa că sarcina lui v-a revenit vouă. Totuşi Parmenide a menţionat în treacăt înainte să plece că rezolvarea problemei se bazează în mod esenţial pe următoarele două proprietăţi ale reţelei stradale din Atena:

  • N1 ≥ 2 * M2;
  • Oricum am alege o intersecţie a din Atena şi alte 3 intersecţii distincte b, c şi d legate prin drumuri directe de a, există un drum direct între b şi c sau între c şi d sau între b şi d (pot exista şi două dintre aceste drumuri directe sau chiar toate trei la un loc).

Scrieţi un program care determină dacă reţeaua stradală din Sparta este inclusă în reţeaua stradală din Atena, în sensul dat de Pericle. Dacă răspunsul este afirmativ, atunci programul trebuie să determine şi mulţimile A1, A2, ..., AN2.

Date de intrare

Fişierul de intrare atena.in are următoarea structură:

  • pe prima linie se află două numere naturale N1 şi M1, reprezentând numărul de intersecţii din Atena, respectiv numărul de drumuri bidirecţionale dintre ele;
  • pe fiecare din următoarele M1 linii sunt scrise două numere naturale separate printr-un spaţiu x y (1 ≤ x, y ≤ N1) cu semnificaţia că între intersecţiile x şi y din Atena exista drum;
  • pe următoarea linie se află două numere naturale N2 şi M2, reprezentând numărul de intersecţii din Sparta, respectiv numărul de drumuri bidirecţionale dintre ele;
  • pe fiecare din următoarele M2 linii sunt scrise două numere naturale separate printr-un spaţiu x y (N1 + 1 ≤ x, y ≤ N1 + N2) cu semnificaţia că între intersecţiile x şi y din Sparta exista drum.

Date de ieşire

În fişierul de ieşire atena.out se va găsi pe prima linie cuvântul DA dacă reţeaua stradală din Sparta este inclusă în reţeaua stradală din Atena sau NU dacă nu este inclusă.

Numai în cazul în care pe prima linie se află DA trebuie să urmeze N2 linii cu următoarea structură:

  • pe linia i + 1 (1 ≤ i ≤ N2) se vor afla un întreg pi reprezentând numărul de elemente din mulţimea Ai, urmat de un spaţiu, şi apoi de pi întregi separaţi prin spaţii, reprezentând elementele din mulţimea Ai într-o ordine oarecare. Fiecare element din mulţimea Ai trebuie să fie un număr natural între 1 şi N1.

Dacă există mai multe soluţii atunci oricare se consideră corectă.

Restricţii

  • 1 ≤ N1, N2 ≤ 100 000
  • 1 ≤ M1, M2 ≤ 200 000
  • N1 - 1 ≤ M1
  • N2 - 1 ≤ M2
  • Pentru toate testele folosite la corectare reţeaua stradală din Atena verifică cele două proprietăţi enunţate de Parmenide.

Exemplu

atena.inatena.out
6 6
1 2
2 3
3 4
4 5
5 6
1 6
3 3
7 8
8 9
9 7
DA
2 1 4
1 2
1 3

Explicaţie

În exemplul de mai sus, reţeaua stradală a Atenei este formată din 6 intersecţii legate prin 6 drumuri, în timp ce reţeaua stradală a Spartei este formată din 3 intersecţii legate prin 3 drumuri.

Prima proprietate enunţată de Parmenide este verificată deoarece 6 ≥ 2 * 3. Cum Atena nu conţine intersecţii incidente cu cel puţin 3 drumuri, şi a doua proprietate enunţată este verificată.

Putem alege mulţimile disjuncte două câte două şi nevide. Pentru drumul dintre 7 şi 8 există un drum între 1 şi 2, pentru drumul dintre 8 şi 9 există un drum între 2 şi 3 iar pentru drumul dintre 9 şi 7 există un drum între 4 şi 3. Prin urmare, conform definiţiei dată de Pericle reţeaua stradală a Spartei este inclusă în reţeaua stradală a Atenei.

Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?