问题标题: 酷町堂:1276 最短路径问题

0
0
已解决
杜承俊
杜承俊
资深守护
资深守护
  • #include<bits/stdc++.h>
  • using namespace std;
  • int n,m,u,v;
  • double f[110][110];
  • double x[110],y[110];
  • int main(){
  • //freopen(".in","r",stdin);
  • //freopen(".out","w",stdout);
  • for(int i=1;i<=100;i++)
  • for(int j=1;j<=100;j++)
  • f[i][j]=1e8;
  • cin>>n;
  • for(int i=1;i<=n;i++)
  • cin>>x[i]>>y[i];
  • cin>>m;
  • for(int i=1;i<=m;i++){
  • cin>>u>>v;
  • double p=abs(x[u]-x[v]),q=abs(y[u]-y[v]);
  • double t=sqrt(p*p+q*q);
  • f[u][v]=t;
  • }
  • cin>>u>>v;
  • for(int k=1;k<=n;k++)
  • for(int i=1;i<=n;i++)
  • for(int j=1;j<=n;j++)
  • if(f[i][j]>f[i][k]+f[k][j])
  • f[i][j]=f[i][k]+f[k][j];
  • printf("%0.2f",f[u][v]);
  • return 0;
  • }
  • Wrong Answer:40分
  • https://ke.codingtang.com/#/problems/submitInfo?id=2461356

0
已采纳
汪恺恒
汪恺恒
中级启示者
中级启示者

建图时要建双向边

还有,f[i]的初值不要赋太大,不然可能会爆int

我要回答