online: 12; azi: 813; total: 52819 Manual clasa a xi a - Implementarea structurilor de date - Grafuri

Manual clasa a Xi a

Implementarea structurilor de date

Grafuri

Într un fişier este scrisă o matrice pătrată, astfel: pe primul rând, un număr care reprezintă dimensiunea matricei, şi pe următoarele rânduri, valori numerice despărțite prin spaţiu — care reprezintă elementele de pe câte o linie a matricei. Să se verifice dacă această matrice poate fi matricea de adiacență a unui graf. În caz afirmativ, să se precizeze dacă graful este orientat sau neorientat
# include < iostream >
# include < fstream >
bool este_orientat ( int ** matrice, int n) {
for ( int i = 0 ; i < n; ++i) {
for ( int j = 0 ; j < n; ++j) {
if (matrice[i][j] != matrice[j][i]) {
return true ;
}
}
}
return false ;
}
int main () {
std :: ifstream fin ( "matrice.txt" ) ;
if (!fin) {
std :: cerr << "Eroare la deschiderea fisierului " << std :: endl ;
return 1 ;
}
int n;
fin >> n;
int ** matrice = new int *[n];
for ( int i = 0 ; i < n; ++i) {
matrice[i] = new int [n];
}
for ( int i = 0 ; i < n; ++i) {
for ( int j = 0 ; j < n; ++j) {
fin >> matrice[i][j];
}
}
fin. close ();
if ( este_orientat (matrice, n)) {
std :: cout << "Graful este orientat." << std :: endl ;
} else {
std :: cout << "Graful este neorientat." << std :: endl ;
}
for ( int i = 0 ; i < n; ++i) {
delete [] matrice[i];
}
delete [] matrice;
return 0 ;
}