/*HAMILTIONIAN CYCLE*/
#include<iostream.h>
#include<conio.h>
void hamil(int);
void nv(int);
int n=4,g[10][10],x[20];
void main()
{
int i,j,k=2;
clrscr();
cout<<"\n\t\t\tHAMILTIONIAN CYCLE\n";
cout<<"\nEnter the no. of nodes:";
cin>>n;
cout<<"\nEnter the adjacency matrix\n";
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
{
cout<<" "<<i<<","<<j<<":";
cin>>g[i][j];
}
}
for(j=2;j<=n;j++)
x[j]=0;
hamil(k);
getch();
}
void hamil(int k)
{
int i;
x[1]=1;
while(1)
{
nv(k);
if(x[k]==0)
{
getch();
exit(1);
}
else if(k==n)
{
cout<<"\nThe solution is:";
for(i=1;i<=n;i++)
cout<<x[i]<<’\t’;
cout<<"\n";
cout<<"\nThe given cycle is hamiltonian";
}
else
hamil(k+1);
}
}
void nv(int k)
{
int i;
do
{
x[k]=(x[k]+1)%(n+1);
if(x[k]==0)
return;
if(g[x[k-1]][x[k]]==1)
{
for(int j=1;j<=n;j++)
{
if(x[j]==x[k])
break;
}
if(j==k)
{
if((k<n)||((k==n)&&(g[x[n],x[1]]!=0)))
return;
}
}
}while(1);
}
Hamiltonian
Share This!
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment