]>
wirehaze git hosting - graph-theory.git/blob - gt.c
17 print_dot_graph (struct graph
*g
, const char *name
)
23 printf ("graph %s {\n", name
);
24 for (i
= 0; i
< g
->nv
; ++i
)
27 for (e
= g
->v
[i
].adj
; e
; e
= e
->next
)
30 vj
= vertex_id (g
, e
->to
);
32 printf (" %d -- %d;\n", vi
, vj
);
39 print_dot_digraph (struct graph
*g
, const char *name
)
45 printf ("digraph %s {\n", name
);
46 for (i
= 0; i
< g
->nv
; ++i
)
49 for (e
= g
->v
[i
].adj
; e
; e
= e
->next
)
52 vj
= vertex_id (g
, e
->to
);
53 printf (" %d -> %d;\n", vi
, vj
);
60 main (int argc
, char **argv
)
63 enum algo a
= ALGO_NONE
;
65 unsigned int nv
, u
, v
;
68 static struct option long_opts
[] = { { "dfs", no_argument
, 0, 'd' },
69 { "bfs", no_argument
, 0, 'b' },
72 while ((c
= getopt_long (argc
, argv
, "db", long_opts
, NULL
)) != -1)
83 fprintf (stderr
, "Usage: %s [--dfs|--bfs] <nv> [u1 v1 ...]\n",
90 fatal ("no algorithm specified");
93 fatal ("missing number of vertices");
95 nv
= (unsigned int)atoi (argv
[optind
]);
96 if (!(g
= new_graph (nv
)))
97 fatal ("new_graph ()");
99 for (i
= optind
+ 1; i
< argc
- 1; i
+= 2)
101 u
= (unsigned int)atoi (argv
[i
]);
102 v
= (unsigned int)atoi (argv
[i
+ 1]);
103 if (add_edge (g
, u
, v
))
104 fatal ("add_edge ()");
113 fatal ("algorithm failed");
115 print_dot_graph (g
, "g");
117 print_dot_digraph (dt
, "dt");