online: 6; azi: 1167; total: 53173 Manual clasa a xi a - Implementarea structurilor de date - Grafuri

Manual clasa a Xi a

Implementarea structurilor de date

Grafuri

Scrieți un program care citeşte , din două fişiere text, g1.txt şi g2.txt, matricele de adiacență a două grafuri, Ga=( X,Ua ) şi Gb=( X,Ub ), şi care determină matricea de adiacenţă a grafului reuniune Gr=( X,Ur ), unde Ur = Ua reunit Ub , care se salvează în fişierul g3.bxt şi matricea de adiacenţă a grafului intersecție Gi =( X,Ui ), unde Ui= Ua intersectat Ub , care se salvează în fişierul g4.txt.
# include < iostream >
# include < fstream >
# include < cstdlib >
void citeste_matrice ( const std :: string & filename , int n, int ** matrice) {
std :: ifstream input ( filename ) ;
if (!input) {
std :: cerr << "Eroare la deschiderea fisierului : " << filename << std :: endl ;
exit ( 1 );
}
for ( int i = 0 ; i < n; ++i) {
for ( int j = 0 ; j < n; ++j) {
input >> matrice[i][j];
}
}
input. close ();
}
void scrie_matrice ( const std :: string & filename , int n, int ** matrice) {
std :: ofstream output ( filename ) ;
if (!output) {
std :: cerr << "Eroare la deschiderea fisierului : " << filename << std :: endl ;
exit ( 1 );
}
for ( int i = 0 ; i < n; ++i) {
for ( int j = 0 ; j < n; ++j) {
output << matrice[i][j] << ' ' ;
}
output << std :: endl ;
}
output. close ();
}
int main () {
int n;
std :: cout << " Introduceti dimensiunea matricelor de adiacenta: " ;
std ::cin >> n;
int ** matrice_g1 = new int *[n];
int ** matrice_g2 = new int *[n];
int ** matrice_reuniune = new int *[n];
int ** matrice_intersectie = new int *[n];
for ( int i = 0 ; i < n; ++i) {
matrice_g1[i] = new int [n];
matrice_g2[i] = new int [n];
matrice_reuniune [i] = new int [n];
matrice_intersectie [i] = new int [n];
}
citeste_matrice ( "g1.txt" , n, matrice_g1);
citeste_matrice ( "g2.txt" , n, matrice_g2);
for ( int i = 0 ; i < n; ++i) {
for ( int j = 0 ; j < n; ++j) {
matrice_reuniune [i][j] = matrice_g1[i][j] || matrice_g2[i][j];
matrice_intersectie [i][j] = matrice_g1[i][j] && matrice_g2[i][j];
}
}
scrie_matrice ( "g3.txt" , n, matrice_reuniune );
scrie_matrice ( "g4.txt" , n, matrice_intersectie );
for ( int i = 0 ; i < n; ++i) {
delete [] matrice_g1[i];
delete [] matrice_g2[i];
delete [] matrice_reuniune [i];
delete [] matrice_intersectie [i];
}
delete [] matrice_g1;
delete [] matrice_g2;
delete [] matrice_reuniune ;
delete [] matrice_intersectie ;
return 0 ;
}