ConcursC++17

conexidad

Fie un graf neorientat cu NN noduri și MM muchii, care NU este conex.

Cerinţe

Să i se adauge grafului un număr minim de muchii, astfel încât acesta să devină conex.

Fie extraiextra_i numărul de muchii nou-adăugate care sunt incidente cu nodul ii, iar maxextramax_{extra} cea mai mare dintre valorile extra1,extra2,...,extraNextra_1, extra_2,... , extra_N. Mulțimea de muchii adăugate trebuie să respecte condiția ca valoarea maxextramax_{extra} să fie minimă.

Date de intrare

Pe prima linie a fișierului de intrare conexidad.in se află două numere naturale NN și MM, iar pe fiecare dintre următoarele M linii se află câte o pereche de numere a,ba, b, semnificând faptul că există muchia [a,b][a,b]. Numerele aflate pe aceeași linie a fișierului sunt separate prin câte un spațiu.

Date de ieşire

Fișierul de ieșire conexidad.out va conține pe prima linie valoarea maxextramax_{extra}. Pe a doua linie va conține valoarea KK reprezentând numărul de muchii nou-adăugate în graf. Fiecare dintre următoarele KK linii va conține câte o pereche de numere c,dc, d, separate prin câte un spațiu, semnificând faptul că se adaugă grafului muchia [c,d][c,d].

Restricţii și precizări

  • 1≤N≤1001 \leq N \leq 100
  • 0≤M≤N⋅(N−1)/20 \leq M \leq N \cdot (N-1)/2
  • Nodurile grafului sunt numerotate de la 11 la NN inclusiv.
  • Muchiile prezente în fișierul de intrare sunt distincte.
  • Pentru orice muchie [a,b][a,b] aflată în fișierul de intrare, avem a≠ba \neq b.
  • Graful din fișierul de intrare nu este conex.
  • În cazul în care soluția afișată pentru un anumit test conectează graful cu număr minim de muchii, dar nu minimizează valoarea lui maxextramax_{extra}, se vor acorda 50%50\% din punctajul pentru testul respectiv.
  • Dacă există mai multe soluţii optime, se va admite oricare dintre acestea.
  • Se acordă 1010 puncte din oficiu.

Exemplul 1

conexidad.in

4 2
1 2
4 2

conexidad.out

1
1
3 1

Explicație

Graful este format din două componente conexe, cu noduri din mulțimea {1,2,4}\{1,2,4\} respectiv nodul izolat 33.
După adăugarea muchiei (3,1)(3,1) vom avea valorile extra1=1,extra2=0,extra3=1,extra4=0extra_1=1, extra_2=0, extra_3=1, extra_4=0, deci maxextra=1max_{extra}=1.
Se poate demonstra că nu există soluție cu maxextra<1max_{extra}<1.

Exemplul 2

conexidad.in

5 1
3 4

conexidad.out

2
3
1 3
2 3
4 5

Explicație

Graful este format din patru componente conexe, cu noduri din mulțimea {3,4}\{3,4\}, respectiv nodurile izolate 1,21, 2 și 55.
După adăugarea muchiilor (1,3),(2,3)(1,3), (2,3) și (4,5)(4,5), vom avea valorile extra1=1,extra2=1,extra3=2,extra4=1,extra5=1extra_1=1, extra_2=1, extra_3=2, extra_4=1, extra_5=1, deci maxextra=2max_{extra}=2.
Se poate demonstra că nu există soluție cu maxextra<2max_{extra}<2.

Sursă și autori

OJI 2019, clasele 11, 12. Mihai Calancea.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑