pamant

Time limit: 0.25s Memory limit: 48MB Input: pamant.in Output: pamant.out

Pe pământul din apropierea localităţii Gheorgheni s-au întâlnit toţi copiii şi doresc organizarea unui joc mai deosebit. Copiii au fost numerotaţi de la 11 la NN şi ştim care sunt prietenii fiecărui copil.

O echipă este un grup maximal de copii cu proprietatea că oricare ar fi copiii PP şi QQ din echipă, există un şir de copii C1,,CkC_1, \dots , C_k astfel încât P=C1P=C_1, Q=CkQ=C_k, şi oricare ar fi 1i<k1 \leq i < k, CiC_i este prieten cu Ci+1C_{i+1}.

Fiecare echipă va primi un cod, egal cu cel mai mic număr de ordine al unui copil din echipa respectivă.

Dorim să aflăm care sunt copiii vulnerabili, adică acei copii care dacă ar fi eliminaţi ar duce la spargerea echipei sale în două sau mai multe echipe.

Cerinţă

Scrieţi un program care să identifice toate echipele formate conform regulilor de mai sus, precum şi care sunt copiii vulnerabili.

Date de intrare

Fişierul de intrare pamant.in conţine:

  • pe prima linie două numere naturale NN şi MM reprezentând numărul de copii şi respectiv numărul relaţiilor de prietenie;
  • următoarele MM linii conţin câte două numere naturale distincte xx şi yy, cu semnificaţia că xx şi yy sunt numerele de ordine a doi copii în relaţie de prietenie.

Date de ieşire

  • Prima linie a fişierului de ieşire pamant.out conţine o singură valoare naturală AA, reprezentând numărul de echipe.
  • A doua linie conţine AA numere naturale separate prin câte un spaţiu reprezentând codurile echipelor, în ordine crescătoare.
  • A treia linie conţine o valoare naturală BB reprezentând numărul de copii vulnerabili.
  • A patra linie conţine BB valori naturale, separate prin câte un spaţiu, reprezentând numerele de ordine, scrise în ordine crescătoare, ale copiilor vulnerabili.

Restricţii şi precizări

  • 1N100 0001 \leq N \leq 100\ 000
  • 1M200 0001 \leq M \leq 200\ 000
  • Se acordă 40%40\% din punctaj pentru corectitudinea primelor două linii din fişierul de ieşire şi 60%60\% pentru celelalte două linii.
  • Relaţiile de prietenie sunt reciproce: dacă xx este prieten cu yy, atunci şi yy este prieten cu xx.
  • Dacă xx este prieten cu yy şi yy este prieten cu zz nu înseamnă că xx este prieten cu zz.
  • Pentru 30%30\% din teste N1 000N \leq 1\ 000.

Exemplu

pamant.in

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

pamant.out

4
1 3 4 9
2
2 5

Explicaţie

Există 44 echipe şi anume:

  • prima echipă: (1,2,8)(1,2,8)
  • a doua echipă: (3,5,7,10)(3,5,7,10)
  • a treia echipă: (4,6)(4,6)
  • a patra echipă: (9)(9)

Există doi copii speciali şi anume 22 şi 55.

Log in or sign up to be able to send submissions!