Orar semigroup #2

Orar semigroup #2

02/24 - Probleme grafuri orientate

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;}
       
}

joi, 23 februarie 2012 by DlMuresan
Categories: , | Leave a comment

Leave a Reply