pta7-7旅游规划(dijkstra算法)
题目链接:https://pintia.cn/problem-sets/1101307589335527424/problems/1101314114762387456
题意:给n给城市,m条公路,公路是双向的,起点S,终点D,并给出每条公路连接的两个city的编号以及路费,求S到D的最短距离,若具有最短距离的路线不止一条,求出路费最少的一条。
思路:单源最短路径问题,利用dijkstra算法求出S到其他点的最短路径,只不过加一个路费cost,在dis相等的情况下,取cost最小值。
AC代码:
#include<bits/stdc++.h>
using namespace std; const int inf=0x3f3f3f3f;
int n,m,S,D;
int dis[],cost[],a[][],b[][],vis[]; void dijkstra(){
vis[S]=;
for(int i=;i<n-;++i){
int Min=inf,k;
for(int i=;i<n;++i)
if(!vis[i]&&dis[i]<Min)
Min=dis[i],k=i;
if(Min==inf) break;
vis[k]=;
for(int i=;i<n;++i)
if(!vis[i]&&dis[i]>dis[k]+a[k][i]){
dis[i]=dis[k]+a[k][i];
cost[i]=cost[k]+b[k][i];
}
else if(!vis[i]&&dis[i]==dis[k]+a[k][i]&&cost[i]>cost[k]+b[k][i])
cost[i]=cost[k]+b[k][i];
}
} int main(){
scanf("%d%d%d%d",&n,&m,&S,&D);
for(int i=;i<n;++i)
for(int j=;j<n;++j)
a[i][j]=b[i][j]=inf;
int t1,t2,t3,t4;
while(m--){
scanf("%d%d%d%d",&t1,&t2,&t3,&t4);
a[t1][t2]=a[t2][t1]=t3;
b[t1][t2]=b[t2][t1]=t4;
}
for(int i=;i<n;++i)
dis[i]=a[S][i],cost[i]=b[S][i];
dis[S]=cost[S]=;
dijkstra();
printf("%d %d\n",dis[D],cost[D]);
return ;
}
pta7-7旅游规划(dijkstra算法)的更多相关文章
- 7-9 旅游规划(25 分)(Dijkstra最短路径算法)
有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路径都是最短的,那么需要输出最便 ...
- 7-9 旅游规划 (25 分)(Dijkstra算法)
题意: 思路:单源最短路问题,Dijkstra算法搞定就可以了,因为要找出最便宜的最短路,所以需要在更新最短距离的时候加一个条件(即当最短距离相等的时候,如果该路径的花费更小,就更新最小花费)就可 ...
- 带你找到五一最省的旅游路线【dijkstra算法推导详解】
前言 五一快到了,小张准备去旅游了! 查了查到各地的机票 因为今年被扣工资扣得很惨,小张手头不是很宽裕,必须精打细算.他想弄清去各个城市的最低开销. [嗯,不用考虑回来的开销.小张准备找警察叔叔说自己 ...
- 利用dijkstra算法规划线路
# dijkstra# 1.在数据库内预先存放了北京市内最新的道路节点,选用优化了得dijkstra算法进行线路规划. 当输入起点和终点后,会计算出最短的路径.同时还能选择查看路径经过的道路节点 ...
- 带你找到五一最省的旅游路线【dijkstra算法代码实现】
算法推导过程参见[dijkstra算法推导详解] 此文为[dijkstra算法代码实现] https://www.cnblogs.com/Halburt/p/10767389.html package ...
- PTA 旅游规划(25 分)
7-10 旅游规划(25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...
- PTA 7-10(图) 旅游规划 最短路问题
7-10(图) 旅游规划 (25 分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果 ...
- 互联网IP合全局路由优化的原则-Dijkstra算法证明
周末继续写东西的一半填补了,为了达到完美的一天.我们知道一个事实,IP地址太多.统一管理是不可能的了,无论从控制平面从数据/管理层表示,飞机是如此. 所以.IP协议被设计为可伸缩.供IP路由术语,跳路 ...
- 数据结构与算法--最短路径之Dijkstra算法
数据结构与算法--最短路径之Dijkstra算法 加权图中,我们很可能关心这样一个问题:从一个顶点到另一个顶点成本最小的路径.比如从成都到北京,途中还有好多城市,如何规划路线,能使总路程最小:或者我们 ...
随机推荐
- HTML5 Canvas 小例子 伸缩旋转方块
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- PHP5 的五种常用模式
PHP5 的五种常用模式. 工厂模式 最初在设计模式 一书中,许多设计模式都鼓励使用松散耦合.要理解这个概念,让我们最好谈一下许多开发人员从事大型系统的艰苦历程.在更改一个代码片段时,就会发生问题,系 ...
- 【JEECG技术文档】表单配置-树形表单
表单配置支持树型表单了,具体效果如下图: 配置说明: 1.是否树:选择是. 2.树形表单父Id:表的自关联外键. 3.树形表单列表:显示树形图标的列,如上图中为[组织机构名称]. 4.默认值:最外层数 ...
- Choose unique values for the 'webAppRootKey' context-param in your web.xml files!
在Tomcat的server.xml中配置两个context,出现其中一个不能正常启动,交换配置顺序,另一个又不能正常启动,即始终只有第二个配置能启动的情况.如果单独部署,都没有问题.报错大致内容如下 ...
- Crash 文件调试
Xcode目录下执行 find . -name symbolicatecrash 找到symbolicatecrash位置,将其拷贝到debug用的文件夹下 执行命令 export DEVELOPER ...
- Docker容器硬盘动态扩容
扩容容器 docker容器默认的空间是10G,如果想指定默认容器的大小(在启动容器的时候指定),可以在docker配置文件里通过dm.basesize参数指定,比如 1 docker -d --sto ...
- Pronunciation – The Definitive Guide to the Top 100 Words in American English
Pronunciation – The Definitive Guide to the Top 100 Words in American English Share Tweet Share Tagg ...
- LeetCode OJ 22. Generate Parentheses
题目 Given n pairs of parentheses, write a function to generate all combinations of well-formed parent ...
- pytest 单元测试
pytest简介 pytest 是python的一种单元测试框架,它非常的简洁.清晰. pytest 安装 pip install -U pytest 查看pytest版本 pytest --vers ...
- django 运行脚本
转自:https://segmentfault.com/a/1190000006752130 runscript 命令会首先检查每个 app 下的 scripts 目录,如果找到对应名字的脚本就会执行 ...