{
for(j=1;j<=g.n;j++)
os<<g.a[i][j]<<" ";
os<<'n';
}
return os;
}
voidoperator- (grafn &A, grafn &B)
{
int i , j , minn ;
minn=A.n;
if ( minn>B.n)
minn=B.n;
for ( i = 1; i <= minn ; ++ i)
for ( j = 1; j<= minn ;++ j )
if ( A.a[i][j]==B.a[i][j] && A.a[i][j] )
A.a[i][j] = A.a[j][i]= 0;
}
int main()
{
int c ;
grafn A[3];
//meniul vietii :
do {
system ("cls");
cout<<" 1. Citeste graf n";
cout<<" 2. Afiseaza graf n";
cout<<" 3. Diferenta intre grafuri n";
cout<<" 4. Afiseaza componente conexe n";
cout<<" 0. Iesire n";
cin>>c;
switch (c)
{
case 1 :
{
int x ;
system ("cls");
cout << " 1. Citeste primul graf n";
cout << " 2. Citeste al doilea graf n";
cin >> x;
system ("cls");
cin>>A[x];
break ;
}
case 2 :
{
int x ;
system ("cls");
cout << " 1. Afiseaza primul graf n";
cout << " 2. Afiseaza al doilea graf n";
cin >> x ;
system ("cls");
cout << A [ x ];
getch();
break ;
}
case 3 :
{
5.
int x ,y;
system ("cls");
cout << " Afiseaza diferenta X - Y n";
cout << " Dati X: " ;
cin >> x;
cout << " Dati Y: " ;
cin >> y;
cout << 'n' ;
system ("cls");
cout << " Situatia grafului "<< x << " inaintea efectuarii operatiei: n";
cout << A[x];
cout << 'n';
cout << " Situatia grafului "<< y << " inaintea efectuarii operatiei: n";
cout << A[y];
cout << 'n';
A[x]-A[y];
cout << " #########################################################nn";
cout << " Situatia grafului "<< x << " dupa efectuarea operatiei: ";
cout << A[x];
cout << 'n';
getch();
break ;
}
case 4 :
{
int x;
system ("cls");
cout << " 1. Primul graf n";
cout << " 2. Al doilea graf n";
cin >> x ;
system ("cls");
A[x].comp();
getch();
break ;
}
}
} while (c) ;
}