* 13 aprilie
* 18 aprilie
* 25 aprilie
O harta rutiera, definita prin orase si autostrazi intre aceste orase, poate fi reprezentata sub forma unui graf orientat in care nodurile reprezint orasele, iar muchiile reprezinta autostrazile (vom considera autostrazile ca fiind unidirectionale). O astfel de reprezentare a unei harti rutiere este foarte eficienta pentru a determina diferite proprietati ale acesteia (conectivitatea intre diferite orase, care sunt cele mai frecventate rute, cel mai scurt drum intre doua orase etc.).
Fiind date orasele in ordinea lor lexicografica, legaturile dintre orase si orasele in care se afla benzinarii, va trebui sa determinati urmatoarele statistici si proprietati:
Notiunile definite mai sus vor fi explicate in detaliu in sectiunea urmatoare.
Se defineste gradul de aglomeratie al unui oras ca fiind numarul de autostrazi care intra in orasul respectiv. Voi va trebui sa determinati orasul care are gradul de aglomeratie maxim. Daca exista mai multe orase cu grad maxim de aglomeratie il vezi afisa pe cel mai mic din punct de vedere lexicografic.
Consideram ca o harta rutiera este valida daca exista un traseu(format din una sau mai multe muchii) intre oricare doua orase.
Veti primi o lista cu mai multe orase. Pentru fiecare oras din aceasta lista va trebui sa determinati o lista de orase cu care acesta nu poate comunica(doua orase nu pot comunica daca nu exista un drum dus-intors intre ele). Daca harta rutiera este valida, va exista cel putin un drum intre oricare doua orase. Lista oraselor inaccesibile pe care o determinati trebuie sortata lexicografic dupa nume. Daca nu exista orase inaccesibile(se poate ajunge in orice oras), afisati pe o singura linie mesajul “Exista drum intre oricare doua orase”.
Pentru o lista de masini avand caracteristicile mentionate mai sus, trebuie sa determinati, pentru fiecare masina, cea mai apropiata benzinarie in care se poate ajunge cu masina respectiva. Daca masina se afla intr-un oras cu benzinarie, aceasta va trebui sa ajunga la o benzinarie dintr-un oras diferit fata de cel din care porneste. Pentru o masina aflata in orasul A si 2 benzinarii aflate in orasele B, respectiv C, consideram ca benzinaria B este mai apropiata de masina din A daca lungimea drumului minim de la A la B este mai mica decat lungimea drumului minim de la A la C.
Fie o masina cu X litri de conbustibil intial si cu un consum de C litri per unitate. Pentru a putea parcurge o muchie dintre doua orase, masina TREBUIE sa aiba in rezervor cel putin ( >= ) C litri de combustibil. X si C reprezinta numere intregi strict pozitive(strict mai mari ca 0).
Un traseu intre 2 orase este definit prin urmatorul tuplu: <nume_sursa nume_destinatie numar_calatori> unde:
Autobuzul nu opreste in orase intermediare; opreste doar in orasul destinatie. Pot exista mai multe autobuze care merg intre aceleasi orase A si B. Toate autobuzele merg pe drumul de lungime minima intre sursa si destinatie.
Avand date toate rutele autobuzelor in formatul prezentat anterior, trebuie sa determinati ruta <nume_sursa nume_oras_intermediar_1 nume_oras_intermediar_2 … nume_oras_intermediar_k nume_destinatie> care este frecventata de cei mai multi calatori. Daca vor exista mai multe astfel de rute de aceeasi lungime minima, o veti afisa pe cea mai mica din punct de vedere lexicografic. Se defineste ca cel mai frecventat traseu, traseul parcurs de cei mai multi calatori, indiferent de numarul de autobuze care circula pe acel traseu.
Mai multe detalii despre formatul de afisare vor fi prezentate in sectiunea urmatoare.
Vom prezenta in continuare un exemplu de harta rutiera si formatul de intrare si afisare a datelor.
Ordinea datelor de intrare este urmatoarea:
7 8 Boston Chicago LasVegas LosAngeles NewYork Washington Wisconsin NewYork LasVegas LosAngeles NewYork Washington NewYork LasVegas Washington Washington LosAngeles Boston Chicago Chicago Wisconsin Wisconsin Boston 2 LasVegas Chicago 3 Washington LosAngeles Wisconsin 2 LosAngeles 5 3 Boston 3 3 4 LasVegas LosAngeles 35 Washington NewYork 40 Boston Wisconsin 25 LasVegas LosAngeles 6
Obs.: Pentru a puncta fiecare task in parte va trebui sa creati un fisier separat pentru afisarea rezultatelor fiecarui task. (Veti crea 5 fisiere task1.out, task2.out etc.)
Format task1.out: nume_oras grad_aglomeratie
Format task2.out: Daca reteaua este valida: HARTA VALIDA Daca reteaua este invalida: HARTA INVALIDA
Format task3.out: Fisierul va contine K linii de forma Orase inaccesibile pentru <nume_oras_task3_i>: <nume_oras_inaccesibil_0> <nume_oras_inaccesibil_1> … <nume_oras_inaccesibil_j>
Format task4.out: Fisierul va contine L linii de forma, fiecare linie i corespunde masinii i din fisierul de intrare: Daca se poate ajunge la o benzinarie: DA - <combustibil ramas> Daca nu se poate ajunge la o benzinarie: NU
Format task5.out: <numar_total_calatori> <nume_sursa nume_oras_intermediar_1 nume_oras_intermediar_2 … nume_oras_intermediar_k nume_destinatie>
task1.out:
NewYork 2
Explicatie: Sunt 2 autostrazi care intra in NewYork (LosAngeles - NewYork si Washington - NewYork)
task2.out:
HARTA INVALIDA
Explicatie: Se observa ca exista mai multe orase intre care nu exista drum (direct sau indirect). Un astfel de exemplu este perechea de orase LosAngeles Boston.
task3.out:
Orase inaccesibile pentru Washington: Boston Chicago Wisconsin Orase inaccesibile pentru LosAngeles: Boston Chicago Wisconsin Orase inaccesibile pentru Wisconsin: LasVegas LosAngeles NewYork Washington
task4.out:
NU DA 0
Explicatie: Prima masina are 5 litri de combustibil initial, un consum de 3 litri per unitate si se afla in LosAngeles. Cea mai apropiata benzinarie de ea este cea din LasVegas. Masina pleaca din LosAngeles si ajunge in NewYork cu 2 litri de combustibil ramasi, deci nu mai poate parcurge nicio alta autostrada si ramane blocata in NewYork. A doua masina are 3 litri de combustibil initial, un consum de 3 litri per unitate si se afla in Boston. Cea mai apropiata benzinarie de ea este cea din Chicago, la care poate ajunge parcurgand muchia Boston - Chicago, ramanand cu 0 litri de combustibil.
task5.out:
41 LasVegas Washington LosAngeles
Explicatie: Pe ruta LasVegas - LosAngeles circula 2 autobuze cu un numar total de 41 de calatori. Drumul de lungime minima de la LasVegas la LosAngeles este LasVegas → Washington → LosAngeles.
Temele vor trebui trimise pe vmchecker. Atenție! Temele trebuie trimise în secțiunea Structuri de Date (CA).
Arhiva trebuie să conțină:
Toate soluțiile vor fi verificate folosind o unealtă de detectare a plagiatului. În cazul detectării unui astfel de caz, atât plagiatorul cât și autorul original (nu contează cine este sursa) vor primi punctaj 0 pe toate temele!
De aceea, vă sfătuim să nu vă lăsați rezolvări ale temelor pe calculatoare partajate (la laborator etc), pe mail/liste de discuții/grupuri etc.
Q: Se poate folosi STL?
A: Se pot folosi urmatoarele structuri de date din STL: string, list, vector.