首页| 新闻| 娱乐| 游戏| 科普| 文学| 编程| 系统| 数据库| 建站| 学院| 产品| 网管| 维修| 办公| 热点
5 1 31 33 44 17 58 3
18.18【样例解释】 最短路径:0->1->4->3->2->0
对于所有数据x,y,b1,b2如题目描述.
#include<iostream>#include<cstdio>#include<cmath>using namespace std;int a,b,c,d,e,v[2001][2];double r[2001][2001],f[2001][2001],ans;double dp(int,int);int main(){ freopen("path.in","r",stdin); freopen("path.out","w",stdout); scanf("%d%d%d",&a,&b,&c); b++; c++; for (d=1;d<=a;d++) scanf("%d%d",&v[d][1],&v[d][2]); for (d=1;d<=a-1;d++) for (e=d+1;e<=a;e++) r[d][e]=sqrt((v[d][1]-v[e][1])*(v[d][1]-v[e][1])+(v[d][2]-v[e][2])*(v[d][2]-v[e][2])); for (d=1;d<=a;d++) for (e=1;e<=a;e++) f[d][e]=-1; ans=dp(1,1); printf("%.2lf",ans);}double dp(int i,int j){ int k; if (f[i][j]==-1) { if (i>j) k=i; else k=j; if (k==a) f[i][j]=0; else { if (k+1==b) f[i][j]=r[i][b]+dp(b,j); else if (k+1==c) f[i][j]=r[j][c]+dp(i,c); else if (k+1==a) f[i][j]=r[i][a]+r[j][a]+dp(a,a); else f[i][j]=min(r[i][k+1]+dp(k+1,j),r[j][k+1]+dp(i,k+1)); } } return f[i][j];}
索泰发布一款GTX 1070 Mini迷
AMD新旗舰显卡轻松干翻NVIDIA
索泰发布一款GTX 1070 Mini迷你版本:小机
芭蕾舞蹈表演,真实美到极致
下午茶时间,悠然自得的休憩
充斥这繁华奢靡气息的城市迪拜风景图片
从山间到田野再到大海美丽的自然风景图片
肉食主义者的最爱美食烤肉图片
夏日甜心草莓美食图片
人逢知己千杯少,喝酒搞笑图集
搞笑试卷,学生恶搞答题
新闻热点
疑难解答
图片精选
Dictionary数据类型在Darwin视频服
可穿戴手势识别控制器
网友关注