]>
wirehaze git hosting - graph-theory.git/blob - graph/dfs.c
17 dfs_ (struct graph
*g
, struct graph
*dt
, struct state
*vs
, unsigned int ri
)
20 struct state
*rs
, *ns
;
25 (rs
= &vs
[ri
])->c
= RED
;
29 while (e
&& (n
= e
->to
))
31 ni
= vertex_id (g
, n
);
36 if ((err
= add_arc (dt
, ri
, ni
)))
39 if ((err
= dfs_ (g
, dt
, vs
, ni
)))
58 if (!(dt
= new_graph (g
->nv
)))
61 if (!(vs
= calloc (g
->nv
, sizeof *vs
)))
64 for (vi
= 0; vi
< g
->nv
; ++vi
)
65 if (vs
[vi
].c
== WHITE
)
66 if (dfs_ (g
, dt
, vs
, vi
))