Un graf orientat este o pereche G = (X, U), unde:
• X este o mulțime finită de vârfuri.
• U este o mulțime de perechi ordonate de vârfuri, numite arce.
Matrice pătratică n×n: A[i][j] = 1 dacă există arcul (i→j), altfel 0.
Vârfuri: 1,2,3 Arce: (1→2),(2→3) Matrice: 0 1 0 0 0 1 0 0 0
Fiecare vârf are o listă cu vârfurile către care există arce:
1: 2 2: 3 3: -
Se păstrează toate perechile de vârfuri care formează arce. În C++ putem folosi struct:
struct Arc {
int v1;
int v2;
};
Arc U[2];
U[0] = {1,2};
U[1] = {2,3};
Exemplu:
#include <iostream>
using namespace std;
struct Arc {
int v1;
int v2;
};
int main() {
int n = 3;
Arc U[2] = {{1,2},{2,3}};
for(int i=0;i<2;i++)
cout << "(" << U[i].v1 << "→" << U[i].v2 << ") ";
return 0;
}
Exemplu:
Se determină dacă un graf este DAG: verificăm dacă există cicluri orientate prin algoritmi DFS sau topologic.