All pastes #2056818 Raw Edit

i_chun_nie_wymyslilem

public text v1 · immutable
#2056818 ·published 2011-05-11 14:01 UTC
rendered paste body
#include<iostream>

using namespace std;

/******************************************************************************/
bool promising(int i,int n,bool **W,int vindex[])
{
int j;
bool zmiana;
if(i == n-1 && !W[vindex[n-1]][vindex[0]])
 zmiana=0;
 else if (i>0 && !W[vindex[i-1]][vindex[i]])
  zmiana=0;
  else { zmiana=1;
         j=1;
         
         while (j<i && zmiana)
         {
         if(vindex[i]==vindex[j])
            zmiana=0;
         j++;
         }
   }
return zmiana;
}
  
/******************************************************************************/





void hamilton (int i,int n,bool **W,int vindex[])
{
int j;
if( promising( i , n , W , vindex ))
    if(i==n-1)
              {
              for(int b=0;b<n;b++)
              {cout<< vindex[b]<<",";}
              cout<<"\n";
              }
    else
        for(j=2;j<=n;j++)
                         {
                         vindex[i+1]=j;
                         
                         hamilton(i+1,n,W,vindex);
                         }
}
/******************************************************************************/




main()

{
int n=1000;
cout<<"podaj ile wieszcholkow bedzie mial Twoj graf\n";
cin>>n;
bool **W;
W = new bool*[n+1];
W[0] = new bool [(n+1)*(n+1)];
for(int i = 1;i<(n+1);i++)
{
 W[i]= W[i-1]+(n+1);
}

int vindex[n] ;
for(int i=0;i<n;i++)
 {vindex[i]=1;}

cout<<"podaj \"1\" jesli tak,\"0\"jesli nie\n";
for(int i=1;i<=n;i++)
         
         {
        for (int z=1+i;z<=n;z++)
            {
            cout<<"czy wieszcholek "<<i<< " sasiaduje z wieszcholkiem "<<z<<" ";
            bool pom=0;
            cin>>pom;
            W[i][z]=pom;
            W[z][i]=pom;
            }
        }
for(int i=1;i<=n;i++)
        {W[i][i]=0;}
cout<<"tak wyglada Twoja macierz sasiedztw\n";
for(int z=1;z<=n;z++)
       {
       cout<<"\n";
        for(int x=1;x<=n;x++)
        {cout<<W[z][x];}
        }
cout<<"\na o to wszystkie mozliwe cykle hamiltona zaczynajace sie od wieszcholka 1\n";
vindex[0]=1;
hamilton(0,n,W,vindex);