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;

}
Exemple #3
0
void dfs () {
	int i;
	for (i = 0; i < V; ++i) {
		if (!visited[i]) {
			dfsv(i);
		}
	}
}
Exemple #4
0
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);
		}
	}
}