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>Fişier
#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";
}
6 5
1 5
1 4
2 4
2 3
3 5
1 5 3 2 1