数据结构实验之图论七:驴友计划(最短路径)
来源:互联网 发布:java 布尔 编辑:程序博客网 时间:2024/06/06 05:27
题目描述
做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有多条路径最短,则输出过路费最少的一条路径。
输入
连续T组数据输入,每组输入数据的第一行给出四个正整数N,M,s,d,其中N(2 <= N <= 500)是城市数目,城市编号从0~N-1,M是城市间高速公路的条数,s是出发地的城市编号,d是目的地的城市编号;随后M行,每行给出一条高速公路的信息,表示城市1、城市2、高速公路长度、收费额,中间以空格间隔,数字均为整数且不超过500,输入数据均保证有解。
输出
在同一行中输出路径长度和收费总额,数据间用空格间隔。
示例输入
14 5 0 30 1 1 201 3 2 300 3 4 100 2 2 202 3 1 20
示例输出
3 40
提示
#include <stdio.h>#include <stdlib.h>#define inf 0x3f3f3fstruct node{ int l,w;}mp[550][550];int main(){ int n,m,s,d,T,i,j,k,u,v,a,b; scanf("%d",&T); while(T--) { scanf("%d%d%d%d",&n,&m,&s,&d); for(i=0;i<=n-1;i++) for(j=0;j<=n-1;j++) { if(i!=j) { mp[i][j].l=mp[i][j].w=inf; } } for(i=1;i<=m;i++) { scanf("%d%d%d%d",&u,&v,&a,&b); mp[u][v].l=mp[v][u].l=a; mp[u][v].w=mp[v][u].w=b; } for(k=0;k<=n-1;k++) { for(i=0;i<=n-1;i++) { for(j=0;j<=n-1;j++) { if(mp[i][k].l+mp[k][j].l<mp[i][j].l) { mp[i][j].l=mp[i][k].l+mp[k][j].l; mp[i][j].w=mp[i][k].w+mp[k][j].w; } else if(mp[i][k].l+mp[k][j].l==mp[i][j].l) { if(mp[i][k].w+mp[k][j].w<mp[i][j].w) { mp[i][j].w=mp[i][k].w+mp[k][j].w; } } } } } printf("%d %d\n",mp[s][d].l,mp[s][d].w); } return 0;}
0 0
- 数据结构实验之图论七:驴友计划(最短路径)
- 数据结构实验之图论七:驴友计划(最短路径之Dijkstra算法+Bellman-Ford算法)
- [SDUT](3363)数据结构实验之图论七:驴友计划 ---单源最短路径(图)
- SDUT 3363 数据结构实验之图论七:驴友计划(最短路)
- 数据结构之最短路径(DijKstra)
- 数据结构之最短路径(Floyd)
- 数据结构之最短路径(Floyd)
- 数据结构之 最短路径
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- 数据结构实验之图论七:驴友计划
- strcpy和strncpy的代码实现和区别以及安全性
- Caffe代码阅读
- Fragment 全解析(2):正确的使用姿势
- strtok使用和隐藏坑
- centos部署Redis和Java开发(Jedis)
- 数据结构实验之图论七:驴友计划(最短路径)
- 自定义简单的LodingView
- 26个字母和数字符号ASCII码对照表
- android XML文件 注释
- break,continue,return的区别
- Linux Makefile 中的陷阱
- PHP 数组遍历 的差异(array_diff 的实现)
- Fragment 全解析(3):我的解决方案
- LeetCode 84 Largest Rectangle in Histogram (单调栈)