wzy的大冒险——出发咯QAQ

单点时限: 2.0 sec

内存限制: 512 MB

wzy踏上了冒险的旅程。
现在他从地精手里买了一份地图,地图上有n个城镇。
他从第一个城镇出发,走向(没钱只能走)第n个城镇,现在,请你帮wzy找到一条最短的路径,并倒序(从n到1)输出一条最短路径。
举个栗子:如果有两条路径6 4 3 1和6 5 2 1,我们选择6 4 3 1这条。
地精小提示:路是单向的QAQ。

输入格式

第一行两个数n,m ,(1≤n≤103,1≤m≤103)

接下来m行,每行三个数x,y,z,表示点 x 与点 y 之间有一条权值为 z 的有向边 (1≤x,y,z≤103).

输出格式

第一行一个整数表示 1 到 n 的最短距离;
第二行倒序输出这条路径。

样例

input

5 7
1 2 69
1 3 87
1 4 79
2 5 94
2 3 10
3 5 79
4 5 43

output

122
5 4 1

关键是利用d【maxn】数组去保存路径 然后进行输出  以及一些存图操作

#include <bits/stdc++.h>
using namespace std;
const int INF=0x3f3f3f3f;
const int maxn=1e3+10;
typedef long long ll;
int way[maxn][maxn];//记录从点a到点b的距离
int dis[maxn];//某线段的权值
int flag[maxn];//用来标记走过的点
int d[maxn];//用来标记走过的点
int n,m;//n是定点个数,m有多少个边
int dijkstra()
{memset(dis,0,sizeof(dis));for(int i=1;i<=n;i++){dis[i]=way[1][i];//从1到第i的顶的距离赋给disif(way[1][i]!=INF){d[i]=1;//记录i点事由1到达的 } }flag[1]=1;dis[1]=0;int x;for(int i=1;i<=n;i++)//循环n次每次找到一个最近的点,走过的点标记 {int ans=INF;for(int j=1;j<=n;j++){if(ans>dis[j]&&!flag[j]){ans=dis[j];x=j;}}flag[x]=1;//已经找到给一个标记for(int i=1;i<=n;i++){if(!flag[i]){if(dis[i]>dis[x]+way[x][i]){dis[i]=dis[x]+way[x][i];d[i]=x;//记录到i点事由x过来的 }}} }}int main(){cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){way[i][j]=INF;//把每条路先赋成最大 }}for(int i=1;i<=m;i++){int a,b,c;cin>>a>>b>>c;way[a][b]=c;}dijkstra();cout<<dis[n]<<endl;int t=n;cout<<n<<" ";int s=1;while(t!=1){t=d[t];if(s){cout<<t;//注意下输出s=0; }else cout<<" "<<t; }return 0;} 

求最短路径以及记录路径输出 wzy的大冒险——出发咯QAQ相关推荐

  1. HPU272 wzy的大冒险——出发前的清理(米勒罗宾板子)

    272. wzy的大冒险--出发前的清理 单点时限: 1.0 sec 内存限制: 512 MB 由于上次学弟们没有ak,导致许多蚂蚁被留下了.wzy在出发冒险前请来了一只食蚁兽帮忙清理. 现在出现了一 ...

  2. 佛洛依德算法求最短路径(记录路径信息)

    佛洛依德算法: 利用D矩阵拿到邻接矩阵中的权值.path矩阵记录两点之间的移动中转点(初始值为起点). 对于邻接矩阵中 i 到 j 点的权值进行比较,若加上一个中转点 k 后的权值小于原本的权值,则对 ...

  3. 迷宫问题寻宝(c++实现,求最短路径,显示路径)

    定义一个二维数组: int maze[n][m]; 它表示一个迷宫,其中的1表示道路不通,0表示可以走的路,3 表示宝藏.只能横着走或竖着走,不能斜着走,要求编程序找出找到宝藏的最短路路径,题目保证有 ...

  4. wzy的大冒险——接龙红包

    题源:https://hpuoj.com/contest/27/problem/F/ 单点时限: 2.0 sec 内存限制: 512 MB 最近QQ更新了一个新的功能–"接龙红包" ...

  5. 迪杰斯特拉--- 模板(求最短路径/输出路径/所有路径都可以走的做法)

    迪杰斯特拉--- 模板(求最短路径/输出路径/所有路径都可以走的做法) 1.0版 #include <iostream> using namespace std;const int max ...

  6. python迷宫问题求最短路径_用栈求解迷宫问题的所有路径及最短路径程序

    目的:能将栈运用的更为熟练 实验内容:求解迷宫问题程序,要求输出如图所示的迷宫的路径,并求出第一条最短路径的长度以及最短路径. 设计的算法功能: mgpath(int xi,int yi,int xe ...

  7. matlab求最短路径问题,Matlab最短路径问题记录

    利用graphshortestpath 可以求最短路径,具体用法参考MATLAB帮助 S=[1 1 2 2 3 3 4 4 4 4 5 6 6 7 8]; %起始节点向量 E=[2 3 5 4 4 6 ...

  8. 【POJ - 3310】Caterpillar(并查集判树+树的直径求树脊椎(bfs记录路径)+dfs判支链)

    题干: An undirected graph is called a caterpillar if it is connected, has no cycles, and there is a pa ...

  9. C++迪杰斯特拉算法求最短路径

    一:算法历史 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以 ...

最新文章

  1. 怎样将jsonObject类型转换为date数据类型?
  2. UML中聚合和组合的关系(笔记)
  3. 《精通正则表达式》笔记
  4. WordPress好看的QQ微信等登录插件二开美化版
  5. 作业帮电脑版在线使用_应届生应聘作业帮的在线辅导老师
  6. python实时处理log文件脚本
  7. React Native 触摸事件处理详解
  8. golang:map转json字符串
  9. matlab做拉普拉斯反演,拉普拉斯变换反演
  10. 机器人系统反馈控制结构设计(现代控制理论5)
  11. 计算机程序设计艺术初读感
  12. 浅谈“艰难困苦,玉汝于成”
  13. 信息安全技术——(十五)物联网关键技术
  14. 街景地图工作是如何工作的
  15. 四川大学计算机专业调剂,2020年四川大学计算机学院(软件学院)考研调剂信息...
  16. 裸写http body服务报body Unexpected end of multipart data的解决办法
  17. XX用户不在 sudoers 文件中。此事将被报告。
  18. puzzle(004.1)日历拼图
  19. 手动清除2345流氓主页小记录以及对过去的一些回忆
  20. The file “XXX.app” couldn’t be opened because you don’t have permission to view it.

热门文章

  1. 打开由于被这台计算机限制而无法打开没解决,Win8打开CMD时弹出“本次操作由于这台计算机的限制而被取消如何解决...
  2. canvas绘图 -实现图片围绕中心点旋转
  3. Android根据经纬度获取地址,眼前一亮
  4. 现在Win11和Win10哪个好用?
  5. c语言数据类型ppt,【C语言】基本数据类型.ppt
  6. 报错:Type mismatch: cannot convert from Object to Car
  7. html中引号怎么打,双引号怎么打出来
  8. erp系统开源_要考虑的9大开源ERP系统
  9. 缘灭--HashMap系列之1.8put源码篇(三)
  10. 路由器无线桥接WDS