X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fgraphcut.c;h=93ff79cbac7281c6c6672a8e5a301b2346d4daec;hp=641fa61a27c9f12260625674e2db566fcc45d3aa;hb=3d73649bf0e39778e715a07da902d0a858065a43;hpb=c4e8d97d137d32868c97280106819a1f868e361c diff --git a/lib/graphcut.c b/lib/graphcut.c index 641fa61..93ff79c 100644 --- a/lib/graphcut.c +++ b/lib/graphcut.c @@ -625,6 +625,33 @@ halfedge_t*graph_add_edge(node_t*from, node_t*to, weight_t forward_weight, weigh return e1; } +static void do_dfs(node_t*n, int color) +{ + int t; + n->tmp = color; + halfedge_t*e = n->edges; + while(e) { + if(e->fwd->node->tmp<0) + do_dfs(e->fwd->node, color); + e = e->next; + } +} + +int graph_find_components(graph_t*g) +{ + int t; + int count = 0; + for(t=0;tnum_nodes;t++) { + g->nodes[t].tmp = -1; + } + for(t=0;tnum_nodes;t++) { + if(g->nodes[t].tmp<0) { + do_dfs(&g->nodes[t], count++); + } + } + return count; +} + #ifdef MAIN int main() {