Mam problem ze znalezieniem cyklu hamiltona w grafie nieskierowanym.
Oto moj kod:
podaje n -> liczba wirzcholkow, v-> na poczatku 0, path to sciezka, visited to czy wirzcholek byl odwiedzony i NM to macierz sasiedztwa
int Hamilton(int n, int v, int* path, int* visited, int NM[][n]) {
path[nr] = v; // dopisujemy wierzcholek do sciezki
printf("%d ", path[nr] );
nr++;
if (nr != n) { // jesli sciezka jest jeszcze niepelna
visited[v] = 1;
for (x=0; x<n; x++) // dla wszystkich wierzchołkow x
if (NM[v][x])
if (visited[x]==0)// jesli istnieje krawedz v-x i x nie byl odwiedzony
Hamilton(n, x, path, visited, NM); // przejdz do x
visited[v] = 0;
}
else if (NM[v][0]) { // jesli scieżka zawiera juz wszystkie wierzchołki i jest cyklem
printf("CH: ");
for ( x=0; x<n; x++);
printf("%d, ", path[x]); // wypisz ja
CH++; // liczba cykli++
}
nr--; // usuwamy wierzchołek ze scieżki
}
Prosze pomozcie mi to jakos dopracowac , potrzebuje to na jutro