]>
wirehaze git hosting - graph-theory.git/blob - gt.c
a3c112a21e9517a2853bf42bd05bb12554a73c96
9 #define bfs dfs /* stub until tomorrow */
19 print_dot_graph (struct graph
*g
, const char *name
)
25 printf ("graph %s {\n", name
);
26 for (i
= 0; i
< g
->nv
; ++i
)
29 for (e
= g
->v
[i
].adj
; e
; e
= e
->next
)
32 vj
= vertex_id (g
, e
->to
);
34 printf (" %d -- %d;\n", vi
, vj
);
41 print_dot_digraph (struct graph
*g
, const char *name
)
47 printf ("digraph %s {\n", name
);
48 for (i
= 0; i
< g
->nv
; ++i
)
51 for (e
= g
->v
[i
].adj
; e
; e
= e
->next
)
54 vj
= vertex_id (g
, e
->to
);
55 printf (" %d -> %d;\n", vi
, vj
);
62 main (int argc
, char **argv
)
65 enum algo a
= ALGO_NONE
;
67 unsigned int nv
, u
, v
;
70 static struct option long_opts
[] = { { "dfs", no_argument
, 0, 'd' },
71 { "bfs", no_argument
, 0, 'b' },
74 while ((c
= getopt_long (argc
, argv
, "db", long_opts
, NULL
)) != -1)
85 fprintf (stderr
, "Usage: %s [--dfs|--bfs] <nv> [u1 v1 ...]\n",
92 fatal ("no algorithm specified");
95 fatal ("missing number of vertices");
97 nv
= (unsigned int)atoi (argv
[optind
]);
98 if (!(g
= new_graph (nv
)))
99 fatal ("new_graph ()");
101 for (i
= optind
+ 1; i
< argc
- 1; i
+= 2)
103 u
= (unsigned int)atoi (argv
[i
]);
104 v
= (unsigned int)atoi (argv
[i
+ 1]);
105 if (add_edge (g
, u
, v
))
106 fatal ("add_edge ()");
115 fatal ("algorithm failed");
117 print_dot_graph (g
, "g");
119 print_dot_digraph (dt
, "dt");