#include #include #include #include #include typedef struct { double x; double y; } point; double sqr(double x) { return x*x; } double dist(point cities[], int i, int j) { return sqrt(sqr(cities[i].x-cities[j].x)+ sqr(cities[i].y-cities[j].y)); } double DistSqrd(point cities[], int i, int j) { return (sqr(cities[i].x-cities[j].x)+ sqr(cities[i].y-cities[j].y)); } void swap(int *p, int *q) { int tmp=*p; *p = *q; *q = tmp; } void tsp(point cities[], int tour[], int ncities) { int i,j; int ThisPt, ClosePt=0; double CloseDist; int endtour=0; for (i=1; i", argv[0]); exit(1); } ncities = atoi(argv[1]); cities = alloca(ncities*sizeof(point)); tour = alloca(ncities*sizeof(int)); for (i=0; i