26
问题二:
#include
using namespace std;
struct node{ int x; int y; int num; float weight; };
node v[31]; int mindis[31]; bool vd[31];
void create(ifstream &in,int n){ int i; for(i=0;i int d(node a,node b){ return (abs(a.x-b.x)+abs(a.y-b.y)); } void dis(){ int i,j; for(i=0;i<31;i++){ cout< int next1() { int k,min=M,tag=0; float w; for(int i=1;i<31;i++) 27 { if(vd[i]==false&&d(v[0],v[i]) if(vd[i]==false&&d(v[0],v[i])==min&&v[i].weight>w) { k=i; w=v[i].weight; tag=1; } } if(tag) return k; else return 0; } int next2(int k,float w) { int min=M,tag=0,m,i; for(i=1;i<31;i++) { if(vd[i]==false&&d(v[k],v[i]) min=d(v[k],v[i]); m=i; tag=1; } if(vd[i]==false&&d(v[k],v[i])==min&&w+v[i].weight<=25&&v[i].weight>v[m].weight&&v[i].x>v[k].x&&v[i].y>v[k].y) { m=i;tag=1; } } if(tag) return m; else return 0; } void way() { int k; float w; 28 k=next1(); while(k!=0) { float time,money; int num_of_station=0,distance,tag; vd[k]=true; w=v[k].weight; distance=v[k].x+v[k].y; money=3.0*w*distance; time=(v[k].x+v[k].y)/20.0; cout<<'0'<<\ tag=next2(k,w); while(tag!=0) { num_of_station++; vd[tag]=true; cout< int main(){ ifstream infile(\ create(infile,31); cout< \ 29 } system(\return 0;