Sunteți pe pagina 1din 2

Grafuri orientate

Fișa de lucru
1. Fie graful orientat G=(X,U) cu n vârfuri, reprezentat prin matricea de adiacență. Numărul de
vârfuri și matricea de adiacență se citesc din fișierul text matrice.in.
Se definesc următoarele mulţimi:
 + (x) = { yX | ( x, y )  U } mulţimea succesorilor lui x
 - (x) = { yX | ( y, x )  U } mulţimea predecesorilor lui x
 + (x) = { u = ( x , y) | u  U } mulţimea arcelor care ies din nodul x
 - (x) = { u = ( y , x) | u  U } mulţimea arcelor care intră din nodul x
a. Scrieţi o funcţie care calculează pentru un nod dat, mulţimea +
b. Scrieţi o funcţie care calculează pentru un nod dat, mulţimea -
c. Scrieţi o funcţie care calculează pentru un nod dat, mulţimea +
d. Scrieţi o funcţie care calculează pentru un nod dat, mulţimea -
Afișați pe câte o linie a ecranului, fiecare dintre cele 4 mulțimi, pentru fiecare vârf în parte.

2. În fişierul date.in se memorează, pe prima linie numărul de vârfuri şi pe următoarele linii câte
două numere reprezentând extremităţile arcelor.
a. Scrieţi o funcţie care calculează gradul interior al fiecărui nod al grafului.
b. Scrieţi o funcţie care calculează gradul exterior al fiecărui nod al grafului.
c. Scrieţi o funcţie care afişează acele noduri care au gradul interior egal cu gradul exterior.
d. Afișați nodurile izolate.

3. Se dă o hartă hidrografică care conţine n ape (izvoare, râuri şi mări). Un izvor se varsă într-un râu
şi nu are nici un afluent, o mare are unul sau mai mulţi afluenţi dar nu se varsă în alte ape, restul
sunt râuri. Se cere să se determine:
a. Izvoarele şi numarul lor
b. Care dintre cele n ape sunt mări
c. Care este râul cu cei mai mulţi afluenţi
Scrieţi programul corespunzător în C++.

4. Se citește dintr-un fișier text matrice.txt ordinul unui graf și matricea sa de adiacență.
a) Afișați matricea pe ecran
b) Stabiliți dacă graful este neorientat sau orientat (se va folosi proprietatea de simetrie a MA
a grafului neorientat)
c) Dacă graful este orientat, se citește din fișierul noduri.txt un număr natural k>2 și apoi cele
k elemente numere naturale ale unui vector v. Stabiliti dacă succesiunea de numere
memorate în vectorul v reprezintă pentru graful dat:

a) Drum în graf Se vor utiliza funcțiile:


b) Drum elementar - int drum (int v[20], int k)
c) Drum neelementar - int elementar (int v[20], int k)
d) Drum simplu - int simplu (int v[20], int k)
e) Drum compus - int circuit (int v[20], int k)
f) Circuit - int drum_hamilton(int v[20], int k)
g) Circuit elementar - int circuit_hamilton(int v[20], int k)
h) Drum hamiltonian
i) Circuit hamiltonian
Grafuri orientate
Fișa de lucru

S-ar putea să vă placă și