int order;
int *visited;
void dfs(Graph g)
{
int i;
visited = calloc(nV(g),sizeof(int));
order = 1;
dfsR(g, 0);
}
void dfsR(Graph g, Vertex v)
{
visited[v] = order++;
Vertex w;
for (w = 0; w < nV(g); w++) {
if (!hasEdge(g,v,w)) continue;
if (!visited[w]) dfsR(g, w);
}
}
|