#include #define N 405 #define y1 Y1 using namespace std; int x1[N],y1[N],x2[N],y2[N],X[N],Y[N]; int num[N][N],n,xa,ya,xb,yb,st,ed; vector >a[N*N]; set >G;double f[N*N]; double DIJ(int n){ for (int i=1;i<=n;i++) f[i]=1e100; f[st]=0;G.clear(); G.insert(make_pair(f[st],st)); while (!G.empty()){ pairtmp=*G.begin();G.erase(G.begin()); int x=tmp.second;if (f[x]1) add(num[i][j],num[i-1][j],(X[i]-X[i-1])*1.0/A); if (i<*X) add(num[i][j],num[i+1][j],(X[i+1]-X[i])*1.0/B); if (j>1) add(num[i][j],num[i][j-1],(Y[j]-Y[j-1])*1.0/C); if (j<*Y) add(num[i][j],num[i][j+1],(Y[j+1]-Y[j])*1.0/D); } for (int i=1;i<=*X;i++) for (int j=1;j<=*Y;j++){ if (X[i]==xa&&Y[j]==ya) st=num[i][j]; if (X[i]==xb&&Y[j]==yb) ed=num[i][j]; } printf("%.5f\n",DIJ(tot)); for (int i=1;i<=tot;i++) a[i].clear(); } }