Witam, czy możecie sprawdzić czy moj kod wyznaczania cyklu Hamiltona jest poprawnie napisany?
#include <stdio.h>
#include <stdlib.h>

int koszt=0;
int licznik=0;

int maksymalny(int tab[],int n)
{
int i;
int max,a;
max=tab[1];
i=1;
while(max=0)
{
max=tab[i];
i++;
}
a=i;
for(i=2; i<=n; i++)
{
if(tab[i]!=0){
licznik++;
if(tab[i]>max)
{
max=tab[i];
a=i;
}
}
}
return a;
}

int minimalny(int tab[],int n)
{
int i;
int min,a;
min=tab[1];
a=1;
for(i=1; i<=n; i++)
{
if(tab[i]<min)
{
min=tab[i];
a=i;
}
}
koszt=koszt+min;
return a;
}

int main()
{
FILE* plik;
plik=fopen("plik.txt", "r");
int n, i, j, s;

fscanf(plik,"%d",&n);
fscanf(plik,"%d",&s);
printf("ilosc wierzcholkow to %d\n\n", n);

int W[n+1][n+1];
for(i=1; i<=n; i++)
{
    for(j=1; j<=n; j++)
        fscanf(plik, "%d", &W[i][j]);
}
for(i=1; i<=n; i++)
{
    for(j=1; j<=n; j++)
        printf("W[%d][%d]=%d ", i, j, W[i][j]);
    printf("\n");
}

int C[n+1], odleglosc[n+1], cykl[2*n+3], V[n+1], E[2*n+3];
int f, iteracja, x, u,v;
iteracja=1;

for(i=1; i<=2*iteracja+2; i++)
    cykl[i]=0;
for (j=1; j<=n; j++)
    odleglosc[j]=W[s][j];
for(i=0; i<=n; i++)
    C[i]=10000;

for(i=0; i<=n; i++)
    V[i]=0;
V[1]=s;
for(i=0; i<=n; i++)
    E[i]=0;
for(i=0; i<=2*iteracja; i++)
{
    E[i]=s;
}

while (iteracja<n)
{
    licznik++;
    odleglosc[s]=NULL;
    f=maksymalny(odleglosc,n);
    odleglosc[f]=NULL;
    for(j=1; j<=n; j++)
    {
        if(odleglosc[j]!=NULL)
        {
            licznik++;
            if(W[f][j]<odleglosc[j])
                odleglosc[j]=W[f][j];
        }
    }
    V[iteracja+1]=f;

    j=1;
    for(i=1; i<=iteracja; i++)
    {
        C[i]=W[E[j]][f]+W[f][E[j+1]]-W[E[j]][E[j+1]];
        j=j+2;
    }
    x=minimalny(C,iteracja);
    u=2*x;
    v=2*x+1;
    for(i=2*(iteracja+1); i>=u; i--)
        E[i]=E[i-2];
    E[u]=f;
    E[v]=f;
    for(i=1; i<=2*iteracja+2; i++)
    {
        cykl[E[i]]=E[i+1];
        i++;
    }

    iteracja++;

}
printf("\n\nCYKL:");
printf("%d ",s);
for(i=2; i<2*n+2; i=i+2)
printf("%d ",E[i]);
printf("\n\nKOSZT:%d\n\n", koszt);
printf("\n\nLICZNIK:%d\n\n", licznik);


return 0;

}