float path_len(town * src, town * dst, int dep = 0) { src->been = true; cout << setw(3 * dep) << "" << "At " << src->name << "\n"; if (src == dst) { src->been = false; return 0.0; } for (road * r: src->exits) { town * there = other_end(r, src); if (there->been) continue; float len = path_len(there, dst, dep + 1); if (len >= 0.0) { src->been = false; return len + r->length; } } src->been = false; return -1.0; } ... int main(int argc, char * argv[]) { if (argc < 3 || argc > 4) { cerr << "correct usage: " << argv[0] << " start destination [mapfile]\n"; exit(1); } string filename = "/home/www/class/een318/nebraska-gr.txt"; if (argc == 4) filename = argv[3]; read_map(filename); ...