7-11 旅游规划(25 分)

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

输入格式:

输入说明:输入数据的第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

思路大致为:dijksra,平常我们用的dijkstra只有一种权,而这道题用了两种权,我的思路很简单,用一个map数组记录距离,用一个t数组记录收费,当路程相等的时候,选取更小的收费就行了

ac代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 550;
#define INF 0x3f3f3f3f
int map[maxn][maxn],vis[maxn],dis[maxn],p[maxn],t[maxn][maxn];
int n,m,st,en;
void dijkstra(int s){memset(vis,0,sizeof(vis));for(int i = 0;i<n;i++){dis[i] = map[i][s];p[i] = t[i][s];}vis[s] = 1;dis[s] = 0;p[s] = 0;for(int i = 0;i<n;i++){int v,minn = INF;for(int j = 0;j<n;j++){if(!vis[j] && minn>dis[j]){v = j;minn = dis[j];}}vis[v] = 1;for(int j = 0;j<n;j++){if(!vis[j]&&dis[j]>dis[v]+map[v][j]){dis[j]=dis[v]+map[v][j];p[j] = p[v] + t[v][j];}else if(!vis[j]&&dis[j]==dis[v]+map[v][j]){p[j] = min(p[j],p[v] + t[v][j]);}}}cout<<dis[en]<<" "<<p[en]<<endl;
}int main()
{cin>>n>>m>>st>>en;memset(map,INF,sizeof(map));memset(t,INF,sizeof(t));int a,b,c,d; for(int i = 0;i<m;i++){scanf("%d%d%d%d",&a,&b,&c,&d);map[a][b] = map[b][a] = c;t[a][b] = t[b][a] = d;}for(int i = 0;i<=n;i++) {map[i][i] = 0;}dijkstra(st);return 0;
}

转载于:https://www.cnblogs.com/acer1238/p/9165498.html

旅游规划(双权连通图)相关推荐

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

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

  2. 【数据结构笔记31】Dijkstra算法例题:旅游规划(双权重),以及其他推广

    本次笔记内容: 图习题1 核心算法 图习题2 其他推广 文章目录 旅游规划问题 核心算法 Dijkstra算法推广问题 要求数最短路径有多少条 要求边数最少的最短路 旅游规划问题 如上图,优先看权重1 ...

  3. (c语言详解)07-图6 旅游规划(详细解释)

    本博文源于浙江大学<数据结构>,为了更好地解释程序,先放题目 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条 ...

  4. 07.图6 旅游规划 [Dijkstra 算法]

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

  5. 基于遗传算法的南昌周边城市旅游规划研究(Python实现)

    当前,国民生活水平得到大幅提升,人均汽车拥有量越来越多,自驾周边城市游也成为越来越多家庭节假日期间的选择,旅游路径规划成为研究热点.旅游路径规划问题是基于经典旅行商问题( TSP) 演变而来的,目前主 ...

  6. PTA 旅游规划(邻接矩阵) 思路分析及代码解析

    PTA 旅游规划 思路分析及代码解析v1.0 一.前导 1. 需要掌握的知识 2. 题目信息 二.解题思路分析 1. 题意理解 1. 1 输入数据 1.2 输出数据 2. 思路分析(重点) 三.具体实 ...

  7. PTA 旅游规划(邻接表) 思路分析及代码解析

    PTA 旅游规划_使用邻接表 思路分析及代码解析v1.0 一.前导 1. 需要掌握的知识 2. 题目信息 二.解题思路分析 1. 题意理解 1. 1 输入数据 1.2 输出数据 2. 思路分析(重点) ...

  8. 7-2 旅游规划 (20 分)c语言,浙江省2008年7月高等教育自学考试旅游资源规划与开发A卷2...

    二.双项选择题(本大题共7小题,每小题2分,共14分) 在每小题列出的五个备选项中有两个是符合题目要求的,请将其代码填写在题后的括号内.错选.多选.少选或未选均无分. 1.属于旅游资源的经济特征表现的 ...

  9. C++数据结构——旅游规划(Floyd算法详解)

    旅游规划 作者 陈越 单位 浙江大学 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有 ...

最新文章

  1. GNU/Linux的历史
  2. 读取bmp格式数据--实践思考
  3. 怎么打开网络访问 计算机共享,电脑只要打开共享提示“无法启用共享访问”如何解决...
  4. bootstap-栅格系统
  5. java虚拟机教程图解_深入拆解JAVA虚拟机学习教程
  6. 【转】内核通信之 Netlink 源码分析和实例分析
  7. oracle 9.2.0.1下载,Oracle 9i 从9.2.0.1升级到 9.2.0.6 步骤
  8. (转)Managed DirectX +C# 开发(入门篇)(四)
  9. Java中成员变量、局部变量和静态变量的区别
  10. 面试计算机人员试题及答案,【仁宝电脑员工笔试试题及答案】 - 面试网
  11. 第3章 项目立项管理
  12. 替换PanDown神器 更新Pdown 3.4.6 清爽版
  13. 本科计算机专业学物理力学吗,想读完研就工作,应该选哪个方向,本科物理, - 考研 - 小木虫 - 学术 科研 互动社区...
  14. 机器学习特征值处理方案
  15. 块级和图片的1px间隙
  16. 微型计算机原理与接口技术——8086指令系统之数据传送指令
  17. 牛客练习赛87 B k小数查询(STL)
  18. 超超超 简单构造者模式
  19. 无人车、无人机、超级高铁、智慧城市......这是一份来自未来的出行报告
  20. 小学生计算机特训营,杭州小学生军事特训营

热门文章

  1. 有人说智能制造装备前景大好,那么智能制造装备产业园的潜力如何?
  2. 矜情作态的拼音及解释
  3. 整个线上营销_而言,最重要的是什么?
  4. But Wang Xing, who is concerned about long-term
  5. 软件工程--瀑布模型
  6. linux kernel下输入输出console如何实现
  7. JDK、JRE、JVM的区别及JavaSE、JavaEE和JavaME的区别?
  8. SQL Server中的文件流
  9. sql server 别名_SQL Server别名概述
  10. 51nod 1489 蜥蜴和地下室