int main(int argc, char *argv[]) { graph_t *graph; int i, n, *dist, *parent; graph = graph_create(NUM_ELEM); graph_add_weighted_edge(graph, 0, 9, 200); graph_add_edge(graph, 0, 2); graph_add_edge(graph, 0, 4); graph_add_edge(graph, 0, 6); graph_add_edge(graph, 2, 4); graph_add_edge(graph, 2, 7); graph_add_edge(graph, 7, 9); printf("\nAll edges: \n"); graph_print_edges(graph); printf("\nAll edges from 0: \n"); graph_foreach_weighted(graph, 0, &graph_print_edge_weight, NULL); printf("\nDijkstra: \n"); n = graph_vertex_count(graph); dist = malloc(sizeof(int) * n); parent = malloc(sizeof(int) * n); dijkstra(graph, 0, dist, parent); for (i=0; i<n; i++) if (dist[i] == INT_MAX) printf(" no "); else printf("%3d ", dist[i]); printf("\n"); for (i=0; i<n; i++) printf("%3d ", parent[i]); printf("\n"); graph_destroy(graph); return EXIT_SUCCESS; }
void graph_add_edge(Graph g, int u, int v) { graph_add_weighted_edge(g, u, v, GRAPH_DEFAULT_EDGE_WEIGHT); }
void graph_add_edge(graph_t *graph, int source, int dest) { graph_add_weighted_edge(graph, source, dest, GRAPH_DEFAULT_WEIGHT); }