2. Se citesc din fisierul graf.in n (nr noduri), m (nr. arce) si arcele unui graf orientat.
A) Sa se construiasca matricea varfuri-arce
B) Sa se afiseze listele de vecini
C) Sa se afiseze gradul exterior si interior al fiecarui nod.
D) Pornind de la matricea varfuri-arce sa se construiasca matricea de adiacente.
#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int b[10][10],a[10][10];
int main()
{ifstream f("date");
int x,y,n,m,i,j,k,p,ii,d1,d2,u1,u2;
f>>n>>m;
for(j=1;j<=m;j++)
{f>>x>>y;
b[x][j]=1;
b[y][j]=-1;}
cout<<"Matricea varfuri-arce"<<endl;
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
cout<<setw(3)<<b[i][j];
cout<<endl;
}
cout<<endl<<"Extremitati initiale"<<endl;
for(i=1;i<=n;i++)
{ cout<<"Nodul "<<i<<": ";
for(j=1;j<=m;j++)
{
if(b[i][j]==1)
for(ii=1;ii<=n;ii++)
if(b[ii][j]==-1)
cout<<ii<<" ";
}
cout<<endl;}
cout<<endl;
cout<<"Extremitati finale"<<endl;
for(i=1;i<=n;i++)
{ cout<<"Nodul "<<i<<": ";
for(j=1;j<=m;j++)
{
if(b[i][j]==-1)
for(ii=1;ii<=n;ii++)
if(b[ii][j]==1)
cout<<ii<<" ";
}
cout<<endl;}
cout<<endl;
cout<<"Gradele varfurilor"<<endl;
for(i=1;i<=n;i++)
{d1=d2=0;
for(j=1;j<=m;j++)
if(b[i][j]==1)
d1++;
else if(b[i][j]==-1)
d2++;
cout<<"d+("<<i<<")="<<d1;
cout<<" ";
cout<<"d-("<<i<<")="<<d2;
cout<<endl;
}
cout<<endl;
cout<<"Matricea de adiacente"<<endl;
for(j=1;j<=m;j++)
{//u1=u2=0;
for(i=1;i<=n;i++)
{if(b[i][j]==1)
u1=i;
if(b[i][j]==-1)
u2=i;}
a[u1][u2]=1;
}
for(i=1;i<=n;i++)
{ for(j=1;j<=n;j++)
cout<<setw(3)<<a[i][j];
cout<<endl;}
}