数据结构实验之图论七:驴友计划
Time Limit: 1000 ms Memory Limit: 65536 KiB

Problem Description
做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有多条路径最短,则输出过路费最少的一条路径。
Input
连续T组数据输入,每组输入数据的第一行给出四个正整数N,M,s,d,其中N(2 <= N <= 500)是城市数目,城市编号从0~N-1,M是城市间高速公路的条数,s是出发地的城市编号,d是目的地的城市编号;随后M行,每行给出一条高速公路的信息,表示城市1、城市2、高速公路长度、收费额,中间以空格间隔,数字均为整数且不超过500,输入数据均保证有解。

Output
在同一行中输出路径长度和收费总额,数据间用空格间隔。

Sample Input
1
4 5 0 3
0 1 1 20
1 3 2 30
0 3 4 10
0 2 2 20
2 3 1 20
Sample Output
3 40

/**
1,注意变量取名重复
2,多了一个费用条件需多来一个数组处理
3,明确所求的是两点间的距离
4,思路和大部分代码与prim算法一样,区别仅在更新dis[]时不太一样
正因这样,最短路径的最后结果是dis[f];
5,所犯错误:没有理解最短路径思想,当作最小生成树来处理
**/
#include <iostream>
using namespace std;
const int MAXV=501;
const int INF =1000000000;
int n,bian[MAXV][MAXV],money[MAXV][MAXV],vis[MAXV],dis[MAXV],mon[MAXV];
int sum1,sum2;
void Dijks(int s,int f)
{fill(dis,dis+MAXV,INF);fill(mon,mon+MAXV,INF);dis[s]=0;mon[s]=0;for(int i=0;i<n;i++){int u=-1,min=INF;for(int j=0;j<n;j++){if(vis[j]==0&&dis[j]<min){u=j;min=dis[j];}}vis[u]=1;// if(vis[f]==1)//一开始误以为在此处求和,没有理解最短路径的思想。//return ;for(int v=0;v<n;v++){if(vis[v]==0&&bian[u][v]!=INF&&bian[u][v]+dis[u]<dis[v]){dis[v]=bian[u][v]+dis[u];mon[v]=money[u][v]+mon[u];}elseif(vis[v]==0&&bian[u][v]!=INF&&bian[u][v]+dis[u]==dis[v]&&money[u][v]+mon[u]<mon[v]){mon[v]=money[u][v]+mon[u];}}}
}
int main()
{int t,m,s,f,a,b,c,d;cin>>t;while(t--){fill(bian[0],bian[0]+MAXV*MAXV,INF);fill(money[0],money[0]+MAXV*MAXV,INF);fill(vis,vis+MAXV,0);sum1=sum2=0;cin>>n>>m>>s>>f;while(m--){cin>>a>>b>>c>>d;if(bian[a][b]>c&&money[a][b]>d){bian[a][b]=bian[b][a]=c;money[a][b]=money[b][a]=d;}}Dijks(s,f);cout<<dis[f]<<" "<<mon[f]<<endl;}return 0;
}

数据结构实验之图论七:驴友计划(最新版)相关推荐

  1. 数据结构实验之图论七:驴友计划(最短路Floyd/Dijkstra)

    Description 做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有 ...

  2. 数据结构实验之图论七:驴友计划

    题目描述 做为一个资深驴友,小新有一张珍藏的自驾游线路图,图上详细的标注了全国各个城市之间的高速公路距离和公路收费情况,现在请你编写一个程序,找出一条出发地到目的地之间的最短路径,如果有多条路径最短, ...

  3. SDUT-3362 数据结构实验之图论六:村村通公路

    数据结构实验之图论六:村村通公路 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Descripti ...

  4. SDUT_2122 数据结构实验之链表七:单链表中重复元素的删除

    提交代码 数据结构实验之链表七:单链表中重复元素的删除 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Proble ...

  5. 数据结构实验之查找七:线性之哈希表

    数据结构实验之查找七:线性之哈希表 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 根据给定 ...

  6. SDUT 3379 数据结构实验之查找七:线性之哈希表

    数据结构实验之查找七:线性之哈希表 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 根据给定的一系列整数关键字和素数p, ...

  7. 数据结构实验之排序七:选课名单

    数据结构实验之排序七:选课名单 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 随着学校规模 ...

  8. 数据结构实验之图论九:最小生成树

    数据结构实验之图论九:最小生成树 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 有n个城市,其中有些城市之间可以修建公 ...

  9. SDUT 2142 数据结构实验之图论二:基于邻接表的广度优先搜索遍历

    数据结构实验之图论二:基于邻接表的广度优先搜索遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Descript ...

最新文章

  1. VTK:Rendering之InterpolateCamera
  2. gensim中文处理
  3. java 数组 内存_图解Java数组的内存分配
  4. goal org.mybatis.generator:mybatis-generator-maven-plugin:1.3.6:generate failed: Index: 0, Size: 0
  5. Python学习笔记:pandas初体验
  6. 4号线地铁站点列表_【暖房】6号线酒店式白领公寓;房山地铁站品牌公寓;4号线分散式公寓;朝阳门附近整租房源...
  7. 使用冷门装机助手/流氓软件导致被捆绑安装各种奇奇怪怪软件的问题
  8. 黑盒测试AND白盒测试
  9. latex里图片大小如何调整_如何使Latex中的图片放大依然清晰
  10. 日渐临近的苹果秋季发布会,iOS 11 GM 固件到底提前泄露了哪些秘密?
  11. 凯西与拜耳将在中国共同推广呼吸药物宝丽亚和启尔畅
  12. 谈如何把科大建成一流大学
  13. 2021年中国玉米淀粉市场供需及价格分析,购销转淡,跌势趋稳,价格仍处高位「图」
  14. 第十一次作业 - Alpha 事后诸葛亮
  15. 北京大学公开课:操作系统与虚拟化安全 学习与研究
  16. 在Winform环境下Scottplot简单入门
  17. 【EFI系统分区】关于EFI系统分区的说明
  18. 360加固签名验证_360加固助手加固应用并自动签名的方法
  19. 工作随记1:搭建一个简单局域网,并配置远程管理
  20. Python解释器整数运算向下圆整问题

热门文章

  1. 将字符串转为16进制数_Python 如何将字符串转为字典
  2. python搭建https代理服务器_使用NGINX作为HTTPS正向代理服务器
  3. vim php psr,VIM-PHPer的福利, 将你的VIM打造成为不次于PHPStorm的IDE
  4. 自动驾驶——Tracking的学习笔记
  5. HtmlUnit初探
  6. mybatis字符串模糊匹配
  7. c/c++入门教程 - 3 职工管理系统 完整代码
  8. LeetCode 14. 最长公共前缀 (单指针水平扫描)
  9. 基于Spring Boot 的统一错误处理
  10. 如何优雅地将Markdon格式文件md转为pdf?(使用typora)