这个题的话算是模板题改编了一点吧,不过个人感觉这个改编很有助于你理解迪杰斯特拉这个算法的真谛。
题解:新开一个cost数组来记录花费,仍然是用了优先队列优化的一个思想,与模板题不同的是只需要加一句话(感谢zyx佬发现问题

cost[temp.id]=min(cost[temp.id],temp.w);

这里提可以供一组数据来告诉你为什么要加这句话
不加这句话输出2 3显然不对

3 3 1 3
1 2 2 2
1 3 2 2
2 3 0 1
#pragma GCC optimize(3,"Ofast","inline")
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <math.h>
#include <string>
#include <list>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#define maxn  600
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 1000007;
using namespace std;
struct wazxy{int v,w,len;wazxy(int x,int a,int b){v=x,w=a,len=b;}
};vector <vector<wazxy> > edge;
int n,m,s,e;
bool visited[maxn];
int dis[maxn],cost[maxn];struct node{int id,dis,w;node(int a,int b,int c){id=a,dis=b,w=c;}bool operator < (const node & a)const{return dis>a.dis;}
};
void dij(){memset(dis,MaxN,sizeof(dis));memset(cost,0,sizeof(cost));memset(visited,false,sizeof(visited));dis[s]=0,cost[s]=0;priority_queue<node> q;q.push(node(s,0,0));while(!q.empty()){node temp=q.top();q.pop();if(visited[temp.id]) continue;visited[temp.id]=true;cost[temp.id]=min(cost[temp.id],temp.w);for(int i=0;i<edge[temp.id].size();i++){wazxy node1=edge[temp.id][i];if(visited[node1.v]) continue;if(dis[node1.v]>=temp.dis+node1.len){dis[node1.v]=temp.dis+node1.len;cost[node1.v]=temp.w+node1.w;q.push(node(node1.v,dis[node1.v],cost[node1.v]));}}}
}int main()
{edge.resize(maxn);cin>>n>>m>>s>>e;for(int i=0;i<m;i++){int x,y,a,b;scanf("%d%d%d%d",&x,&y,&a,&b);edge[x].push_back(wazxy(y,b,a));edge[y].push_back(wazxy(x,b,a));}dij();cout<<dis[e]<<" "<<cost[e]<<endl;return 0;
}

07-图6 旅游规划 (25分)(以此感谢zyx佬)相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. linux 下得到进程的启动时间
  2. python小游戏代码大全-python小游戏实现代码
  3. 目标检测 nms非极大抑制算法
  4. CSS 强制换行和禁止换行强制换行 和禁止换行样式
  5. [蓝桥杯]2016蓝桥省赛B组题目及详解
  6. PaddleOCR——申请显存不足【Allocate too much memory for the GPU memory pool, assigned 8000 MB】解决方案
  7. 互联网协议入门 : 用户 ------ 底层
  8. 用一个实际例子理解Docker volume工作原理 1
  9. leetcode37 --- solveSudoku(解数独)
  10. 逼疯上海人的垃圾分类满月了:羊肉串变羊肉吕,奶茶里珍珠按颗算...
  11. word修订模式怎么彻底关闭_标书制作靠它准没错!那些你不知道的Word技巧大全...
  12. bzoj 3361: [Usaco2004 Jan]培根距离
  13. 20155212 2016-2017-2 《Java程序设计》第3周学习总结
  14. 李宏毅机器学习hw1~4作业 强化点
  15. 女生考华为IE会容易一点吗?女生做网工一般是什么岗位呢?找工作容易吗?需要出差吗?以后怎么发展呢?
  16. Spring源码解析之AOP篇(三)----Spring开启AOP的两种方式
  17. 在odl中如何实现rpc
  18. 星期一到星期日的英文_缩写_读音_巧记方法
  19. OpenGL(十五)——Qt OpenGL三种不同的纹理滤波方式、光照、物体的移动
  20. 旷视研究院获得 ECCV SSLAD 双赛道冠军

热门文章

  1. 3D视觉应用开发--机器人3D互动四大技术难点分析
  2. 理解Meta Learning 元学习,这篇文章就够了!
  3. 一种全自动的牙齿CBCT三维个体识别和分割方法
  4. 基础面试题 — 数据结构与算法
  5. PWA项目实战分享(听书APP)
  6. CentOS SVN服务器管理多项目
  7. 80热敏打印机打印TxPrnMod.dll
  8. Visual Studio 15.8 Preview 3支持多点编辑功能
  9. openchain 环境部署
  10. 改变从内部开始:开发者与管理者的协作