Orar semigroup #2

Orar semigroup #2

01/20 - Probleme Grafuri

Se citeşte un graf şi o secvenţă de noduri. Să se verifice dacă secvenţa este lanţ/lanţ elementar/ciclu/ciclu elementar.

#include<iostream>
#include<fstream>
#include<iomanip>
using namespace std;
int n,m,i,u[10][10],x[100],ok=0,ok1=0,ok2=0,ok3=0;
int main()
{ifstream f("graf");
//int n,m,i,u[10][10],x[100],ok=0,ok1=0,ok2=0,ok3=0;
f>>n>>m;
int a,b,c,j,k;
for(i=1;i<=m;i++)
{
f>>a>>b;
u[a][b]=1;
u[b][a]=1;
}
i=1;
while(f>>c)
    {x[i]=c;
    i++;}
 
for(int ii=1;ii<=n;ii++)
    {for(int jj=1;jj<=n;jj++)
        cout<<setw(3)<<u[ii][jj];
    cout<<endl<<endl;}
  
for(int ii=1;ii<i;ii++)
    cout<<x[ii]<<" ";
cout<<endl;
  
for(j=1;j<i-1;j++)
    if(u[x[j]][x[j+1]]==0)
        {cout<<"Nu este lant, deci nu poate fi ciclu si cu atat mai putin nu se pune problema elementaritatii.";return 0;
        ok=1;}
      
if(ok==0)
{    cout<<"Este lant ";
for(j=1;j<=i;j++)
{    for(k=j+1;k<=i;k++)
        if(x[j]==x[k])
            {cout<<"neelementar ";
            ok1=1;
            break;}
break;}
}
if(ok1!=1)
    cout<<"elementar ";

if(ok==0)
    if(x[1]==x[i-1])
        {cout<<endl<<"Este ciclu ";
        ok2=1;}
    else {cout<<endl<<"Nu este ciclu, deci nu se mai pune problema elementaritatii.";return 0;}
 
if(ok2==1)
    {for(j=2;j<=i;j++)
        for(k=j+1;k<=i;k++)
            if(x[j]==x[k])
                {cout<<"neelementar";
                ok3=1;
                return 0;
                }
    }
             
if(ok3==0)
    cout<<"elementar";
 
}
Fişier
6 5
1 5
1 4
2 4
2 3
3 5
1 5 3 2 1

vineri, 20 ianuarie 2012 by DlMuresan
Categories: | Leave a comment

Leave a Reply