hdu 1385(floyed + 路径记录)
来源:互联网 发布:足球数据库app 编辑:程序博客网 时间:2024/05/18 00:29
存在一些点构成一张图,经过每个点要收费,求一个点到另一个点的最小花费(收的费和路程)并输出路径(起点与终点不收钱),如果存在多组答案,输出字典序最小的路径;
模板稍改
#include <iostream>using namespace std;const int inf=0x3f3f3f3f;int n;int pre[1100][1100];int a[1100][1100];int cost[1100];int main(){std::ios::sync_with_stdio(false); cin.tie(0);cout.tie(0);int u,v,val,e,s,sum,va; while (cin>>n&&n) { for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { cin>>a[i][j]; if (i==j) a[i][j]=0; else if (a[i][j]==-1) a[i][j]=inf; pre[i][j]=j; } for (int i=1;i<=n;i++) cin>>cost[i]; for (int k=1;k<=n;k++) for (int i=1;i<=n;i++) for (int j=1;j<=n;j++) { va=a[i][k]+a[k][j]+cost[k];//可以将价钱换做路程来看 if (a[i][j]>va) { a[i][j]=va; pre[i][j]=pre[i][k]; } else if (va==a[i][j]) //距离相等求较小字典序 { if (pre[i][j]>pre[i][k]) pre[i][j]=pre[i][k]; } } while (cin>>s>>e) { if (s==-1&&e==-1) break; int now=pre[s][e]; cout<<"From "<<s<<" to "<<e<<" :"<<endl; cout<<"Path: "<<s; if (s==e) cout<<endl; else { while (1) { cout<<"-->"<<now; if (now==e) break; now=pre[now][e]; } cout<<endl; } cout<<"Total cost : "<<a[s][e]<<endl; cout<<endl; } } return 0;}
阅读全文
0 0
- hdu 1385(floyed + 路径记录)
- floyed(记录路径)
- Free DIY Tour (HDU 1224)—— floyed记录路径
- HDU 2112 HDU Today 【最短路径 dijkstra & floyed & SPFA 】
- hdu 1385 floyd记录路径
- floyd + 记录路径 hdu 1385
- hdu-1385-floyd记录路径
- Floyed 算法求最短路径
- Floyed算法求多源最短路径
- 多源最短路径+源码<floyed>
- HDU 1385 带点权值Floyd+路径记录
- HDU DP记录路径
- hdu 4034 【floyed变形】
- HDU 1385 Minimum Transport Cost(多源最短路径+路径记录)
- 用Floyed算法求最短路径
- P1730 Floyed 最小密度路径
- 最短路径(Floyed算法)
- hdu 1026 BFS 记录路径
- 统计学习方法读书笔记(二)
- numpy矩阵相乘@的用法
- 津巴布韦新总统宣誓就职 穆加贝因身体疲惫未参加
- 51Nod 1007 正整数分组 0-1背包
- struts2_day01_01_struts2内容介绍_02_struts2概述
- hdu 1385(floyed + 路径记录)
- tf.train.exponential_decay()
- python tkinter整理总结
- PHP中explode()和implode()函数讲解和实战用法
- JDK为1.8时使用Realm时build错误和build成功后应用崩溃问题解决
- 通过反射可以获取Class的构造方法 通过构造方法创建对象
- super关键字要点
- 揭秘微信红包:架构、抢红包算法、高并发和降级方案
- hdu4773 Problem of Apollonius【反演变换】