// Main program to test GraphMST // !!! DO NOT MODIFY THIS FILE !!! #include #include #include #include "Graph.h" static Graph readGraph(void); static void outputPlain(Graph g, Graph mst); static void outputVisualiser(Graph g, Graph mst); static int min(int a, int b); int main(int argc, char *argv[]) { if (argc > 2 || (argc == 2 && strcmp(argv[1], "-v") != 0)) { fprintf(stderr, "Usage: %s [-v]\n", argv[0]); exit(EXIT_FAILURE); } Graph g = readGraph(); Graph mst = GraphMst(g); if (argc == 1) { outputPlain(g, mst); } else { outputVisualiser(g, mst); } if (mst != NULL) GraphFree(mst); GraphFree(g); } static Graph readGraph(void) { int nV = 0; scanf("%d", &nV); Graph g = GraphNew(nV); int v, w; double weight; while (scanf("%d,%d,%lf", &v, &w, &weight) == 3) { GraphInsertEdge(g, (struct edge){v, w, weight}); } return g; } static void outputPlain(Graph g, Graph mst) { printf("Graph:\n"); GraphShow(g); printf("\n"); if (mst == NULL) { printf("The graph has no minimum spanning tree.\n"); } else { printf("Minimum Spanning Tree:\n"); GraphShow(mst); } } static void outputVisualiser(Graph g, Graph mst) { FILE *fp = stdout; fprintf(fp, "\n" "\n" " Minimum Spanning Tree\n" " \n" "\n" "\n" "

Minimum Spanning Tree

\n" "

The minimum spanning tree is highlighted in green (if it exists).

\n" "
\n" " \n" " \n" " \n" "\n" "\n" ); // fclose(fp); } static int min(int a, int b) { return a < b ? a : b; }