听取WA声一片

P1907 设计道路

```cpp #include<bits/stdc++.h> using namespace std; float dis[1005][1005],c[1005],x[1005],y[1005],d,r; bool f[1005],vis[1005][1005]; float dq(int i,int j) { return sqrt(abs(x[i]-x[j])*abs(x[i]-x[j])+abs(y[i]-y[j])*abs(y[i]-y[j])); } int main() { int n;cin>>d>>r>>n; for (int i=1;i<=n;++i) { cin>>x[i]>>y[i]; } int a,b; while(cin>>a>>b&&!(a==0&&b==0)) { vis[a][b]=vis[b][a]=1; dis[a][b]=dis[b][a]=r*dq(a,b); } cin>>x[0]>>y[0]>>x[n+1]>>y[n+1]; for (int i=0;i<=n+1;++i) { for (int j=0;j<=n+1;++j) { if (!vis[i][j]) dis[i][j]=d*dq(i,j); } } c[0]=0; f[0]=1; for (int i=1;i<=n+1;++i) c[i]=0x3f3f3f; for (int i=1;i<=n+1;++i) { if (dis[0][i]) c[i]=dis[0][i]; } for (int i=0;i<=n+1;++i) { int k,minn=0x3f3f3f; for (int j=0;j<=n+1;++j) { if (!f[j]&&c[j]<minn) { k=i; minn=c[j]; } } f[k]=1; for (int j=0;j<=n+1;++j) { if (c[k]+dis[k][j]<c[j]) { c[j]=c[k]+dis[k][j]; } } } /*for (int i=0;i<=n+1;++i) { for (int j=0;j<=n+1;++j) { printf("%0.4f",dis[i][j]); cout<<' '; } cout<<endl; }*/ printf("%0.4f",c[n+1]); return 0; } ``` 该,0分
by B1ade_ @ 2020-09-12 14:22:48



by B1ade_ @ 2020-09-12 14:23:10


|