/* Starting point */
- ((edge_t *) edge_weight_tree->head->data)->from->status.visited = true;
+ for(node = edge_weight_tree->head; node; node = node->next) {
+ e = node->data;
+ if(e->from->status.reachable) {
+ e->from->status.visited = true;
+ break;
+ }
+ }
/* Add safe edges */
void graph(void)
{
- mst_kruskal();
sssp_bfs();
+ mst_kruskal();
graph_changed = true;
}
fprintf(file, "}\n");
- fclose(file);
-
- if(filename[0] != '|') {
+ if(filename[0] == '|') {
+ pclose(file);
+ } else {
+ fclose(file);
rename(tmpname, filename);
free(tmpname);
}