Orar semigroup #2

Orar semigroup #2

02/22 - Grafuri orientate

Se citeste un graf orientat. Sa se afiseze nodul interior si exterior al fiecarui nod. Sa se afiseze predecesorii si succesorii fiecarui nod. Sa se afiseze nodurile izolate. Sa se afiseze arcele incidente cu un nod dat.

#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int main()
{ifstream f("date");
int n,m,i,j,s2,s1,x,y,a[10][10]={0},ok;
f>>n>>m;
for(i=1;i<=m;i++)
    {f>>x>>y;
    a[x][y]=1;}
for(i=1;i<=n;i++)
{s1=0;s2=0;
    for(j=1;j<=n;j++)
        {s1+=a[i][j];
        s2+=a[j][i];}
    cout<<"Nodul "<<i<<" are gradul exterior "<<s1<<endl;
    cout<<"Nodul "<<i<<" are gradul interior "<<s2<<endl;
    cout<<endl;
}
for(i=1;i<=n;i++)
    {cout<<"Succesorii lui "<<i<<": ";
        for(j=1;j<=n;j++)
            if(a[i][j]==1)
                cout<<j<<" ";
            cout<<endl;
    }
    cout<<endl;
for(i=1;i<=n;i++)
    {cout<<"Predecesorii lui "<<i<<": ";
        for(j=1;j<=n;j++)
            if(a[j][i]==1)
                cout<<j<<" ";
            cout<<endl;
    }
cout<<"Noduri izolate: ";
for(i=1;i<=n;i++)
{ok=1;
for(j=1;j<=n;j++)
    if(a[i][j]!=0 || a[j][i]!=0)
        ok=0;
if(ok==1)
    cout<<i<<" ";
}
cout<<endl<<endl;
for(i=1;i<=n;i++)
{cout<<"Arce incidente cu "<<i<<": ";
for(j=1;j<=n;j++)
{    if(a[i][j]==1)
        cout<<i<<" "<<j<<"   ";
    if(a[j][i]==1)
        cout<<j<<" "<<i<<"   ";}
    cout<<endl;
}

}

marți, 21 februarie 2012 by DlMuresan
Categories: , | Leave a comment

Leave a Reply