int main() { FILE *fp = fopen("hw12p.txt", "r"); Point *point = (Point *) malloc(MAX_POINT * sizeof(Point)); int junk; double x, y; int i; for (i = 1; i < MAX_POINT; i++) { fscanf(fp, "%d%lf%lf", &junk, &x, &y); point[i].x = x; point[i].y = y; } fclose(fp); double road[MAX_POINT][MAX_POINT]; FILE *fr = fopen("hw12r.txt", "r"); int p1, p2; for (i = 0; i < 928; i++) { fscanf(fr, "%d %d", &p1, &p2); road[p1][p2] = sqrt((point[p1].x - point[p2].x) * (point[p1].x - point[p2].x) + (point[p1].y - point[p2].y) * (point[p1].y - point[p2].y)); road[p2][p1] = road[p1][p2]; } dfs_traverse(road); //bfs_traverse(road); fclose(fr); free(point); return 0; }
void dfs_traverse(node::Node* node, UnaryOperation unary_op) { unary_op(node); for (auto & c : node->get_children()) { dfs_traverse(c.get(), unary_op); } }