7-3 旅游规划 (25分)

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

输入格式:

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

输出格式:

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

ptaptapta良心题

DijkstraDijkstraDijkstra模板题,只不过是双权值多了一个判定就好,还是比较简单的。
不过注意链式前向星没办法处理重边的问题,所以最好用

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<bitset>
#include<vector>
#include<queue>#define over(i,s,t) for(register int i = s;i <= t;++i)
#define lver(i,t,s) for(register int i = t;i >= s;--i)
//#define int __int128
#define lowbit(p) p&(-p)
using namespace std;typedef long long ll;
typedef pair<int,int> PII;
const int N = 4e5+7;struct Node{int id,w,val;bool operator<(const Node &t)const {if(w == t.w)return val > t.val;return w > t.w;}
};
int n,m,s,t;
struct node{int v,w,val,nex;
}e[N];
int head[N],tot;inline void add(int u,int v,int w,int val){e[++tot].v = v;e[tot].nex = head[u];e[tot].val = val;e[tot].w = w;head[u] = tot;
}
int dis[N],value[N];
int vis[N];
priority_queue<Node>q;
void Dijkstra(int x){memset(dis,0x3f,sizeof dis);memset(value,0x3f,sizeof value);dis[x] = value[x] = 0;q.push({x,0,0});while(q.size()){int u = q.top().id;q.pop();if(vis[u])continue;vis[u] = 1;for(int i = head[u];~i;i = e[i].nex){int v =e[i].v,now_w = e[i].w,now_val = e[i].val;if(dis[v] > dis[u] + now_w){dis[v] = dis[u] + now_w;value[v] = value[u] + now_val;q.push({v,dis[v],value[v]});}else if(dis[v] == dis[u] + now_w && value[v] > value[u] + now_val){value[v] = value[u] + now_val;q.push({v,dis[v],value[v]});}}}
}int main()
{cin>>n>>m>>s>>t;memset(head,-1,sizeof head);over(i,1,m){int u,v,w,val;scanf("%d%d%d%d",&u,&v,&w,&val);add(u,v,w,val);add(v,u,w,val);}Dijkstra(s);printf("%d %d",dis[t],value[t]);return 0;
}

PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)相关推荐

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

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

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

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

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

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

  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. PTA 7-1 旅游规划 (25分) 数据结构 Floyd

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

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

    这道题我用dijstra算法,对这个算法稍微做改进就可以.可以说非常经典了! 算法的思想我不必详述,毕竟大家在学习<数据结构>的时候都已经非常了解了. 读我的代码要注意的细节: 1.我储存 ...

  9. 【PTA】旅游规划 (25 分)

    //法1:已知起点终点->单源最短路径 //有权图的单源最短路径:Dijkstra的变形 #include <iostream> #define MAXN 520 #define I ...

最新文章

  1. mean,std,var
  2. 云时代架构阅读笔记十三——你的系统如何处理高并发?
  3. php去除中间空格,php删除字符串中间空格的方法
  4. 【百战GAN】新手如何开始你的第一个生成对抗网络(GAN)任务
  5. linux php后门,Linux_一个初级的linux后门制作方法,众所周知,Linux的文件权限如: - phpStudy...
  6. NYOJ 题目528 找球号(三)
  7. [Android] The connection to adb is down, and a severe error has occured
  8. 这么做科研你也能成功!
  9. Mybatis 一对多关联查询collection用法
  10. JPEG 及MJPEG开发笔记
  11. putty mtputty 设置utf8编码
  12. 无线传感器网络中竞争性MAC协议
  13. matlab利用经纬度计算距离_【MATLAB】经纬度换算距离
  14. linux无线网卡模拟ap,TP-Link无线网卡怎么设置虚拟AP
  15. yaahp层次分析法步骤_层次模型构造
  16. Android 入门第九讲01-音频(本地音乐播放,暂停,继续播放,获取播放时间,快进到指定位置,变速播放,播放data/data/目录下的音频文件,播放网络歌曲)
  17. CSS超基础,快速入门
  18. UVa 1618 弱键(Weak Key)
  19. 东方甄选、交个朋友迎头而上,云集不进则退
  20. 最新产品直线度测量仪提升的不仅是品质 还带来了经济效益

热门文章

  1. 基于OpenCV实现口罩识别
  2. 基于Pyhton的图像隐写术--如何隐藏图像中的数据
  3. [转] 先验概率and后验概率
  4. Java学习提升体系结构
  5. HBASE强制删除表
  6. 官方翻译不当导致的PowerShell运行失败一例
  7. MySQL 关于毫秒和微秒的处理,MySQL获取毫秒!
  8. 命令行运行hadoop实例wordcount程序
  9. 关于swing的一些看法
  10. ipv6的rip配置