.campion
conectare | înregistrare | căutare
Pagina principală » Probleme » sol

ultima problemă
grupă: mică
sursă: OMI 2016
ultimul articol
autor: Prof. Radu Vişinescu
ultimul software
autor: Prof. Emanuela Cerchez
.campion
sol


Timp maxim de executie/test:
0.1 secunde
Memorie totala disponibila/stiva:
16 MB/1 MB

Imperiul bizantin este atacat din nou de catre turci. Pentru a cere ajutor, solii imparatului bizantin trebuie sa ajunga la capitalele a N regate vecine. Intre aceste orase exista M drumuri bidirectionale, construite in astfel incat pornind din orice oras sa se poata ajunge in oricare alt oras, direct sau indirect, trecand prin alte orase. Drumurile sunt insa nesigure, deoarece exista K ghilde de hoti care le controleaza. Fiecare drum este controlat de o singura ghilda, si pentru a fi parcurs trebuie platita o taxa de trecere (care este aceeasi pentru toate drumurile). O ghilda de hoti poate controla mai multe drumuri, insa nu permite trecerea decat pe cel mult unul dintre ele. De asemenea, solii nu vor sa plateasca taxa de trecere pentru mai multe drumuri decat este necesar. Pe un drum pentru care a fost platita taxa de trecere se poate trece de oricate ori in orice directie.
Solii pornesc intotdeauna din orasul 1.

Cerinta

Scrieti un program care calculeaza un numar minim de drumuri pentru care trebuie platita taxa de trecere, astfel incat orice oras sa fie accesibil din orasul 1 mergand numai pe aceste drumuri, si nici o ghilda sa nu controleze mai mult de un drum dintre cele alese.

Date de intrare

Fisierul de intrare sol.in are urmatoarea structura:
- pe prima linie se afla trei numere naturale separate printr-un singur spatiu N M K, reprezentand numarul de orase, numarul de drumuri si numarul de ghilde in care se impart hotii;
- pe liniile 2, . . . , M+1 sunt scrise doua numere intregi separate printr-un spatiu x y (1<=x,y<=N), cu semnificatia ca intre orasul x si orasul y exista drum;
- pe liniile M+2, . . . , M+K+1 este scris un intreg pi (0<pi<=M), urmat de pi intregi x1, x2, …, xpi(0<xj<=M, 0<j<=pi), reprezentand numarul de drumuri controlate de ghilda i, respectiv drumurile care sunt controlate de aceasta. Toate numerele sunt separate printr-un singur spatiu. Descrierea ghildei i se afla pe linia M+i+1. Drumurile se considera numerotate de la 1 la M in ordinea in care se gasesc in fisierul de intrare. Fiecare drum apare exact o data pe una din liniile M+2, . . . , M+K+1.

Date de iesire

Pe prima linie a fisierului de iesire sol.out trebuie sa se afle un numar intreg D, reprezentand numarul de drumuri selectate, sau -1 daca nu exista solutie. In cazul in care exista solutie, pe urmatoarea linie trebuie sa se afle D intregi separati printr-un singur spatiu reprezentand drumurile selectate. Drumurile se considera numerotate de la 1 la M in ordinea in care se gasesc in fisierul de intrare. Ordinea in care sunt afisate drumurile nu are importanta. Daca exista mai multe solutii, atunci oricare se considera corecta.

Restrictii

  • 0 <= N,M <= 200
  • 0 <= K <= M
  • Nu exista drum de la un oras la el insusi.
  • Intre oricare doua orase exista cel mult un drum.

Exemplu

sol.in

sol.out

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

5
1 2 5 6 8

student Codrut Grosu
Facultatea de Automatica si Calculatoare, Politehnica, Bucuresti
grosu_codrut@yahoo.com

propunător: Prof. Emanuela Cerchez
emanuela.cerchez@gmail.com
Articole recomandate
Probleme recomandate
De la .campion 2006: scara, programs, nr, iepuras2, numere3, robot2, fry, suma, sah, formule, perm, cifra, repeat, ture, xor, policefm, unu, criptare, ed, bilete, vector, scor, ratb, infinit, race, dragon, kreg, placi, hanoig, red, 2sec, flood, sume3, balls, festival, croco, johnie, matrice3, pavaj, sume, arthur, kimberley, kafka, vocale, pento, prop, ro, bacan, erdos, poligon, reduceri, druid, novel, gramezi, nrbinar, laser, spair, caravane, cuburi, grup, invest, cd, friends2, mese, toys
Despre graf: gropi, tgv, matrice2, miniasm, picnic, mere, circuit, soldati, arce, conflicte, desen, robot, furtuna, net, cuvinte, excursie, cadere, pioni, reinvent, kreg, flood, croco, johnie, matrice, arthur, kimberley, ro, caravane, bete, honest, police, pcod, zmeu, auto2, grazing, datorii, trafic, sponsori, monede1, apm, bile1, caini, masina1, bomboane, turn1, shgraf, paintball, program1, tgraf, kgb, algola, felinar, joc6, tric, homeless, promo, turism, casute, joc10, prieteni1, traseu, zapezi, litoral, lover, trip, garaj, ziduri, tv, pact, echipe1, vitale, spion, trasee, bcolor, scara2, lant, ab3, soc, team, gard, rsp, graf, mexc, dep, albinuta1, atac2, cabane, drumuri, tj, grade, jungla, lanterna, magic5, coment, urgenta, fazan, lanturi, cfr, site, traseu1, trmv, graphgame, minuni, telefon, ubergraf, carray, pestera, chei, arbgraf, war, fluviu, drumuri1, entries, ubuntzei, pack, fotbal1, pamant, dag, razboi, benzina2, wg, neconex, asfalt1, kubus2, module, progresii, dfs, prieteni3, megascoala, grafxy, dineu, vot1, biperm, drumuri2, nrgraf, cristal, cartite, copaci3, dragoni, nuclee
surse trimise | ajutor