我能说什么,就是一个Dijkstra的模板,只不过在判断距离相等的情况下加了一个cost。
Dijkstra算法里dis[j] > dis[u] + a[u][j] 里,还要判断a[u][j]!=MAX防止下标越界。

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const  int N = 501;
const int MAX = 0x7fffffff;
int a[N][N],cost[N][N];
int dis[N],money[N];
int vis[N],path[N];
int res[N];
int n,m,s,d;
void Init()
{for(int i=0;i<N;i++)for(int j=0;j<N;j++)a[i][j]=cost[i][j]=MAX;
}
void dijkstra()
{for(int i=1;i<n;i++){int u,minn=0x7fffffff;for(int j=0;j<n;j++)if(dis[j]<minn&&!vis[j]){u=j;minn=dis[j];}vis[u]=1;//  cout<<"当前最小点"<<u<<endl;for(int j=0;j<n;j++){if(dis[u]+a[u][j]<dis[j]&&a[u][j]!=MAX)//a[u][j]!=MAX是因为MAX是int最大,防止再加一个数溢出,下面cost[u][j]同理{dis[j]=dis[u]+a[u][j];path[j]=u;money[j]=money[u]+cost[u][j]; //选取新的最小点之后,对应的花费也需要修改}else if(dis[u]+a[u][j]==dis[j]&&money[u]+cost[u][j]<money[j]&&cost[u][j]!=MAX){money[j] = money[u]+cost[u][j];path[j]=u;}}// for(int j=0;j<n;j++) cout<<dis[j]<<" ";cout<<endl;//for(int j=0;j<n;j++) cout<<money[j]<<" ";cout<<endl;}
}
int main()
{cin>>n>>m>>s>>d;Init();for(int i=0;i<m;i++){int x,y,c,d;cin>>x>>y>>c>>d;a[x][y]=a[y][x]=c;cost[x][y]=cost[y][x]=d;}for(int i=0;i<n;i++){if(i==s) {dis[i]=money[i]=0;continue;}dis[i]= a[i][s];money[i]=cost[i][s];if(dis[i]!=MAX)path[i]=s;else path[i]=-1;}//for(int i=0;i<n;i++) cout<<path[i]<<" ";cout<<endl;//for(int i=0;i<n;i++) cout<<money[i]<<" ";cout<<endl;dijkstra();int k=0,sum=0;for(int i=d;i!=s;i=path[i]){res[++k]=i;sum+=money[i];}cout<<s<<" ";for(int i=k;i>=1;i--)cout<<res[i]<<" ";cout<<dis[d]<<" "<<money[d];
}

1507. 旅行计划相关推荐

  1. 【题解】【AcWing】1507. 旅行计划

    1507. 旅行计划 原题传送:AcWing 1507. 旅行计划 给定一张地图,包含 N N N 个城市, M M M 条高速公路. 城市之间都能相互连通. 每条高速公路的长度和走该条公路的花费都是 ...

  2. 牛客ACM赛 B [小a的旅行计划 ]

    链接 B 小a的旅行计划 把\(n\)个数中选任意数分成\(a,b\)两个集合,集合无区别,要求不包含且有交,求方案数.\(n\leq 10^{13}\) 首先讨论\(a,b\)并集是否为全集: 若是 ...

  3. 【拓扑排序】【DP】旅行计划(luogu 1137)

    旅行计划 luogu 1137 题目大意: 有一堆点,之间连接着一些边(有向),保证无环,现在要求出从任意地方出发到所有点的最长路(出发点不一定相同) 原题: 题目描述 小明要去一个国家旅游.这个国家 ...

  4. 51nod 1273 旅行计划——思维题

    某个国家有N个城市,编号0 至 N-1,他们之间用N - 1条道路连接,道路是双向行驶的,沿着道路你可以到达任何一个城市.你有一个旅行计划,这个计划是从编号K的城市出发,每天到达一个你没有去过的城市, ...

  5. 丽思卡尔顿游轮正式加入万豪旅享家旅行计划

    上海2021年12月9日 /美通社/ -- 万豪国际集团旗下享誉盛名的的旅行计划万豪旅享家(Marriott Bonvoy®)近日宣布,丽思卡尔顿游轮于2021年11月9日起正式加入该计划.丽思卡尔顿 ...

  6. 动态规划+vector解旅行计划问题

    动态规划+vector解旅行计划问题 题目描述 小明要去一个国家旅游.这个国家有#N个城市,编号为1至N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最 ...

  7. 2023北京旅行计划 2023带父母北京旅行计划

    2023北京旅行计划 2023带父母北京旅行计划 一.概述 2023年开始啦,疫情也差不多告别一段落. 准备安排父母来我工作的城市 --- 北京,旅行一番,逛一逛,看一看. 大致的事项:1. 体检 : ...

  8. 从零开始学微信小程序开发:6 旅行计划调查

    小程序对HTML5表单及表单元素进行了封装,提供了丰富的表单组件. 6.1 用form组件收集信息 form(表单)也是前端视图层与后端服务层交互过程中最重要的信息来源. 小程序的form组件具有一些 ...

  9. 【洛谷】P1137旅行计划

    [洛谷]P1137旅行计划 题目描述 小明要去一个国家旅游.这个国家有N个城市,编号为1至N,并且有M条道路连接着,小明准备从其中一个城市出发,并只往东走到城市i停止. 所以他就需要选择最先到达的城市 ...

  10. C++ P0002 旅行计划

    题目:旅行计划 第一次搞输出多个最短路径,搞了有一会儿,方法不太好,有更好的方法可以教me! # include <iostream> # include <cstdio> # ...

最新文章

  1. R语言ggplot2可视化设置轴坐标上的数值全部为整数实战:display only integer values on axis
  2. 【资源分享】数字图像处理MATLAB版冈萨雷斯+中文高清版+随书源码链接
  3. MYSQL的随机抽取实现方法
  4. 服务端的第五次课程:安全,认证,授权
  5. 如何设置电脑开机自动提示(防止忘打卡等)
  6. ubuntu下编译linux内核
  7. 《3ds Max疯狂设计学院》——1.7节学习3ds Max的基本流程,必须要在最开始就了解...
  8. 财经直播搭建干货分享,系统该如何搭建?整套流程及配套细节说明
  9. PDF转Word软件
  10. 请熟悉SQL server的高手赐教。
  11. 串口(串行接口)相关概念
  12. 学习OpenCV——计算邻接区域列表(build_adjoin)
  13. 英语音标表、48个国际音标发音表、falsh音标学习视频
  14. Android 之6.0 双向通话自动录音
  15. 【ENOVIA 服务包】知识重用解决方案 | 达索系统百世慧®
  16. 嵌入式linux 修改mac,MAC to MAC 环境下,嵌入式linux的修改
  17. String类常用方法思维导图总结
  18. 乙腈和水共沸_水在不同压力下的沸点及常见的共沸物
  19. Leetcode917:仅仅反转字母(simple)
  20. 哈密顿算子与梯度、散度、旋度

热门文章

  1. win10系统任务栏卡死
  2. 2017年下半年综合素质作文
  3. 同个网络找不到计算机打印机共享,搜索不到共享打印机怎么办_同一局域网找不到共享打印机的解决方法-系统城...
  4. 目前最值得购买的两种上网神器?看完你会选择哪一款?
  5. 5类6类7类网线对比_超详细的超五类、六类、七类网线的对比
  6. 英国外交部翻译教你实用口语课,让你飚出一口地道、流利英语
  7. 有道智云实时语音翻译服务全新上线,86+语言实时翻译!
  8. 将数字转为ASCII码
  9. python爬虫遇到动态加密怎么办?爬取某点评网站内容
  10. 笔记本电脑上如何创建html,笔记本怎么创建wifi_笔记本电脑怎么创建无线网络-win7之家...