解题思路:
注意事项:
参考代码:
#include<iostream> #include<algorithm> #define MAX 99999 using namespace std; double m[500+1][500+1]; double dis[500+1]; int S[500+1]; int n,k; void dijkstra(int star){ //初始化dis for(int i=1; i<=n; i++) dis[i]=m[star][i]; S[star]=1; for(int i=1; i<=n-1; i++){ //找出S集合外,距离原点最近的点 double mint=MAX; for(int j=1; j<=n; j++){ if(S[j]==0 && mint>dis[j]){ mint=dis[j]; star=j; } } S[star]=1; //更新dis for(int j=1; j<=n; j++) dis[j]=min(dis[j],dis[star]+m[star][j]); } } int main(){ cin>>n>>k; for(int i=1; i<=n; i++ ){ for(int j=1; j<=n; j++){ cin>>m[i][j]; if(m[i][j]==0) m[i][j]=MAX; } S[i]=0; } double v; for(int i=1; i<=n; i++ ){ for(int j=1; j<=n; j++){ cin>>v; if(v!=0) m[i][j]/=v; //权重变为时间 } } dijkstra(1); printf("%.2lf\n",dis[k]); return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:744 |
C语言训练-阿姆斯特朗数 (C语言代码)浏览:897 |
C二级辅导-公约公倍 (C语言代码)浏览:1550 |
C语言训练-求具有abcd=(ab+cd)2性质的四位数 (C语言代码)浏览:619 |
数列排序 (C语言代码)浏览:858 |
妹子杀手的故事 (C语言代码)浏览:1297 |
C语言程序设计教程(第三版)课后习题6.9 (C语言代码)浏览:806 |
C语言训练-阶乘和数* (C语言代码)-------- 呆板写法浏览:1396 |
C语言程序设计教程(第三版)课后习题9.10 (C语言代码)浏览:583 |
Tom数 (C语言代码)浏览:581 |