数据结构实验之图论七:驴友计划(folyd算法)
来源:互联网 发布:全球进化 知乎 编辑:程序博客网 时间:2024/06/05 10:26
数据结构实验之图论七:驴友计划
Time Limit: 1000MS Memory Limit: 65536KB
Submit Statistic
Problem Description
做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有多条路径最短,则输出过路费最少的一条路径。
Input
连续T组数据输入,每组输入数据的第一行给出四个正整数N,M,s,d,其中N(2 <= N <= 500)是城市数目,城市编号从0~N-1,M是城市间高速公路的条数,s是出发地的城市编号,d是目的地的城市编号;随后M行,每行给出一条高速公路的信息,表示城市1、城市2、高速公路长度、收费额,中间以空格间隔,数字均为整数且不超过500,输入数据均保证有解。
Output
在同一行中输出路径长度和收费总额,数据间用空格间隔。
Example Input
14 5 0 30 1 1 201 3 2 300 3 4 100 2 2 202 3 1 20
Example Output
3 40
弗洛伊德算法用来求任意两点间的最短路径问题,其实也就是多源最短路径问题,就是在求i j节点间最短加入第三个节点k,看从i到k再到j是否比直接从i到j路径短如果短的话就更新ij直接路径权值,从i到j只经过前k节点的最短路径,其实也是一种动态规划的算法;
#include <bits/stdc++.h>#define INF 0x3f3f3f3fusing namespace std;const int maxn = 550;int gra[maxn][maxn], value[maxn][maxn];int n, m, s, d;void Folyd(){ for(int k = 0; k < n; k++) { for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { if(i != j) { if(gra[i][j] > gra[i][k] + gra[k][j]) { gra[i][j] = gra[i][k] + gra[k][j]; value[i][j] = value[i][k] + value[k][j]; } if(gra[i][j] == gra[i][k] + gra[k][j]) { if(value[i][j] > value[i][k] + value[k][j]) value[i][j] = value[i][k] + value[k][j]; } } } } }}int main(){ int T; cin>>T; while(T--) { cin>>n>>m>>s>>d; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { if(i == j) gra[i][j] = value[i][j] = 0; else gra[i][j] = value[i][j] = INF; } } for(int i = 0; i < m; i++) { int u, v, w, val; cin>>u>>v>>w>>val; gra[u][v] = gra[v][u] = w; value[u][v] = value[v][u] = val; } Folyd(); cout<<gra[s][d]<<" "<<value[s][d]<<endl; } return 0;}
阅读全文
0 0
- 数据结构实验之图论七:驴友计划(folyd算法)
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- jdk的动态代理及为什么需要接口
- 欢迎使用CSDN-markdown编辑器
- java web中url问号传值,中文乱码问题
- Kali Wifi
- 解决Mybatis的配置文件标签属性自动提示
- 数据结构实验之图论七:驴友计划(folyd算法)
- iOS OS X 和 iOS 中的多线程技术-4 (NSOperation)
- Windos如何查看端口占用并关闭指定进程
- python3.4导excel进mysql数据库
- 正则表达式速查表
- json遍历
- Java 基础夯实4:内部类的使用场景介绍
- 登陆你的CentOS 7 我的命令没毛病吧
- c++ 常用库 和 细节操作