void dfs(int **a,int ver,int start) { int *color; color = malloc(ver*sizeof(int)); int *pi; pi = malloc(ver*sizeof(int)); int *d; d = malloc(ver*sizeof(int)); int *f; f = malloc(ver*sizeof(int)); int u; for(u=0; u<ver; u++) { *(color+u) = 0; *(pi+u) = -1; } time = 0; printf("%d ",start); for(u=0; u<ver; u++) { int k = (start+u)%ver; if(*(color+k) == 0) dfsv(a,k,ver,d,color,f,pi); } }
void dfsv(int **a,int u,int ver,int *d,int *color,int *f,int *pi) { time = time +1; *(d+u) = time; *(color+u) = 1; int v; for(v=0; v<ver; v++) { if(*(*(a+v)+u) == 1) { // printf("%d and %d are connected\n",u,v); if(*(color+v) == 0) { *(pi+v) = u; printf("%d ",v); dfsv(a,v,ver,d,color,f,pi); // printf("%d ",v); } } } // printf("%d ",u); *(color+u) = 2; time = time + 1; *(f+u) = time; }
void dfs () { int i; for (i = 0; i < V; ++i) { if (!visited[i]) { dfsv(i); } } }
void dfsv (int v) { printf("Visiting %d\n", v); visited[v] = 1; int i; for (i = 0; i < V; ++i) { if (!(visited[i]) && (g[v][i] == 1) && (i != v)) { dfsv(i); } } }