立志用最少的代码做最高效的表达


有了一张自驾旅游路线图,你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的,那么需要输出最便宜的一条路径。

输入格式:
输入说明:输入数据的第1行给出4个正整数N、M、S、D,其中N(2≤N≤500)是城市的个数,顺便假设城市的编号为0~(N−1);M是高速公路的条数;S是出发地的城市编号;D是目的地的城市编号。随后的M行中,每行给出一条高速公路的信息,分别是:城市1、城市2、高速公路长度、收费额,中间用空格分开,数字均为整数且不超过500。输入保证解的存在。

输出格式:
在一行里输出路径的长度和收费总额,数字间以空格分隔,输出结尾不能有多余空格。

输入样例:
4 5 0 3
0 1 1 20
1 3 2 30
0 3 4 10
0 2 2 20
2 3 1 20

输出样例:
3 40


dijkstra模板题。

dijkstra求解单源最短路径的效率非常高。

步骤:
1、初始化(初始化地图,初始化起点到其他点的距离)
2、调用dijkstra:首先遍历起点周围的所有点,找到距它最短的点,加入到点集中。 其次更新从点集到其他点的最短距离。

有不懂的地方欢迎评论区留言~


#include<iostream>
#include<cstdio>
using namespace std;const int INF = 0x3f3f3f3f;
int ways[505][505][2];      //储存路径长度,费用
int dist[505], cost[505];   //存储由st出发到各点最短路径及费用
bool visit[505] = {false};
int n,m,st,ov;void dijkstra() {visit[st] = true;   //先将起始点加入集合。int minpoint;for(int i1 = 0; i1 < n; i1++) {minpoint = n;        //编号为n的城市不存在,st到n距离为inffor(int i = 0; i < n; i++) {if((!visit[i]) && (dist[i] < dist[minpoint])) minpoint = i;}if(minpoint == n) break; //没找到,证明无连接,结束循环visit[minpoint] = true;for(int i = 0; i < n; i++) {//如果该点没被访问,且以新加入节点为路径遍历得到的值更小,则更新最小值 if(!visit[i] && (dist[i] > dist[minpoint] + ways[minpoint][i][0])) { dist[i] = dist[minpoint] + ways[minpoint][i][0];cost[i] = ways[minpoint][i][1] + cost[minpoint];}//如果距离相等,但花费更小,则更新最小花费。 else if(!visit[i] && (dist[i] == dist[minpoint] + ways[minpoint][i][0])&& (cost[i] > cost[minpoint] + ways[minpoint][i][1]))cost[i] = (cost[minpoint] + ways[minpoint][i][1]);}  }
}//对地图初始化,都设为无限大。
void init_graph() {for(int i = 0; i < n; i++) for(int j = 0; j < n; j++)ways[i][j][0] = ways[i][j][1] = INF;
} //对从起点到任意点的距离初始化。
void init_d_c() {for(int i = 0; i < n; i++) {dist[i] = ways[st][i][0];cost[i] = ways[st][i][1];}
}int main() {cin >> n >> m >> st >> ov;int a, b, c, d;init_graph();for(int i = 0; i < m; i++) {cin >> a >> b >> c >> d;ways[a][b][0] = ways[b][a][0] = c;ways[a][b][1] = ways[b][a][1] = d;}init_d_c();dist[n] = INF;    //此不存在城市的最短路为INF dist[st] = cost[st] = 0; //到自身的最短路和花费为0dijkstra();cout << dist[ov] << ' ' << cost[ov]; return 0;
}

耗时


修炼爱情的心酸
学会放好以前的渴望
我们那些信仰 要忘记多难
远距离的欣赏 近距离的迷惘
谁说太阳会找到月亮
别人有的爱
我们不可能模仿

修炼爱情的悲欢
我们这些努力不简单
快乐炼成泪水
是一种勇敢
几年前的幻想 几年后的原谅
为一张脸去养一身伤
别讲想念我 我会受不了这样… …

【dijkstra模板】旅游规划 (25 分)相关推荐

  1. PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)

    7-3 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...

  2. 7-3 旅游规划 (25 分)(C语言实现)

    有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...

  3. PTA 07-图6 旅游规划 (25分)

    题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/717 5-9 旅游规划   (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路 ...

  4. 案例6-1.5 旅游规划 (25 分)邻接表实现

    案例6-1.5 旅游规划 (25 分) 用邻接表实现Dijkstra算法 这题一开始做的时候没想到用邻接数组做,所以就用的链表. 总的来说还是Dijkstra算法,只不过是存储方式的问题罢了,我用了四 ...

  5. 7-图6 旅游规划 (25 分)

    7-图6 旅游规划 (25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干 ...

  6. 7-2 旅游规划 (25分)

    7-2 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...

  7. 7-9 旅游规划 (25分) 【最短路径 Floyd+Dijkstra】

    有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...

  8. 07-图6 旅游规划 (25 分)

    有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...

  9. PTA 7-1 旅游规划 (25分) 数据结构 Floyd

    有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...

最新文章

  1. Canvas基础知识
  2. js备忘录模式——实现分页点击已经请求过上一页的数据(读js设计模式)
  3. 敲低这个基因就可以开怀大吃了!诺奖技术助力编辑蛋白质组!NGS可使临床治疗受益!...
  4. flutter网络dio框架get请求使用总结
  5. java_自定义标签运行原理
  6. 多线程的底层原理是怎么样的?
  7. 【使用工具推荐】使用什么录像软件录制屏幕
  8. javascript的window.open()具体解释
  9. 《Android框架揭秘》——2.2节搭建Android平台编译环境
  10. 计算组合数的三种方式
  11. 计算机文件夹中看不到桌面图标,电脑文件夹内不显示图标
  12. 深入浅出的CSS项目开发总结
  13. 钉钉小程序-打开外部链接(文件链接)
  14. 为什么模电这么难学?一文带你透彻理解模电
  15. 针对《面试心得与总结—BAT、网易、蘑菇街》一文中出现的技术问题的收集与整理...
  16. TOEFL wordlist 8
  17. 计算机上如何保存ico格式,怎么把图片转换成ico格式,又快又好
  18. 仿淘宝购买详情页购买缩小动画
  19. SAP标准供应商寄售业务自动清账测试
  20. 为期两年的研究揭示了Android的大问题

热门文章

  1. 开箱即用的微服务框架 Go-zero(进阶篇)
  2. OS- -文件系统(四)
  3. 短视频出海的关键指标、挑战及应对
  4. LiveVideoStack音视频技术年度评奖启动
  5. 别光看世界杯 7月还有一场音视频技术盛宴等着你
  6. FFMPEG进阶系列01-ffplay命令详解
  7. Webpack2的基本使用
  8. ubuntu16.04安装curl
  9. Exception in thread “main“ java.lang.NoSuchMethodError: scala.collection.mut
  10. maven install出错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (d