求最短路径以及记录路径输出 wzy的大冒险——出发咯QAQ
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相关推荐
- HPU272 wzy的大冒险——出发前的清理(米勒罗宾板子)
272. wzy的大冒险--出发前的清理 单点时限: 1.0 sec 内存限制: 512 MB 由于上次学弟们没有ak,导致许多蚂蚁被留下了.wzy在出发冒险前请来了一只食蚁兽帮忙清理. 现在出现了一 ...
- 佛洛依德算法求最短路径(记录路径信息)
佛洛依德算法: 利用D矩阵拿到邻接矩阵中的权值.path矩阵记录两点之间的移动中转点(初始值为起点). 对于邻接矩阵中 i 到 j 点的权值进行比较,若加上一个中转点 k 后的权值小于原本的权值,则对 ...
- 迷宫问题寻宝(c++实现,求最短路径,显示路径)
定义一个二维数组: int maze[n][m]; 它表示一个迷宫,其中的1表示道路不通,0表示可以走的路,3 表示宝藏.只能横着走或竖着走,不能斜着走,要求编程序找出找到宝藏的最短路路径,题目保证有 ...
- wzy的大冒险——接龙红包
题源:https://hpuoj.com/contest/27/problem/F/ 单点时限: 2.0 sec 内存限制: 512 MB 最近QQ更新了一个新的功能–"接龙红包" ...
- 迪杰斯特拉--- 模板(求最短路径/输出路径/所有路径都可以走的做法)
迪杰斯特拉--- 模板(求最短路径/输出路径/所有路径都可以走的做法) 1.0版 #include <iostream> using namespace std;const int max ...
- python迷宫问题求最短路径_用栈求解迷宫问题的所有路径及最短路径程序
目的:能将栈运用的更为熟练 实验内容:求解迷宫问题程序,要求输出如图所示的迷宫的路径,并求出第一条最短路径的长度以及最短路径. 设计的算法功能: mgpath(int xi,int yi,int xe ...
- 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 ...
- 【POJ - 3310】Caterpillar(并查集判树+树的直径求树脊椎(bfs记录路径)+dfs判支链)
题干: An undirected graph is called a caterpillar if it is connected, has no cycles, and there is a pa ...
- C++迪杰斯特拉算法求最短路径
一:算法历史 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以 ...
最新文章
- 怎样将jsonObject类型转换为date数据类型?
- UML中聚合和组合的关系(笔记)
- 《精通正则表达式》笔记
- WordPress好看的QQ微信等登录插件二开美化版
- 作业帮电脑版在线使用_应届生应聘作业帮的在线辅导老师
- python实时处理log文件脚本
- React Native 触摸事件处理详解
- golang:map转json字符串
- matlab做拉普拉斯反演,拉普拉斯变换反演
- 机器人系统反馈控制结构设计(现代控制理论5)
- 计算机程序设计艺术初读感
- 浅谈“艰难困苦,玉汝于成”
- 信息安全技术——(十五)物联网关键技术
- 街景地图工作是如何工作的
- 四川大学计算机专业调剂,2020年四川大学计算机学院(软件学院)考研调剂信息...
- 裸写http body服务报body Unexpected end of multipart data的解决办法
- XX用户不在 sudoers 文件中。此事将被报告。
- puzzle(004.1)日历拼图
- 手动清除2345流氓主页小记录以及对过去的一些回忆
- The file “XXX.app” couldn’t be opened because you don’t have permission to view it.
热门文章
- 打开由于被这台计算机限制而无法打开没解决,Win8打开CMD时弹出“本次操作由于这台计算机的限制而被取消如何解决...
- canvas绘图 -实现图片围绕中心点旋转
- Android根据经纬度获取地址,眼前一亮
- 现在Win11和Win10哪个好用?
- c语言数据类型ppt,【C语言】基本数据类型.ppt
- 报错:Type mismatch: cannot convert from Object to Car
- html中引号怎么打,双引号怎么打出来
- erp系统开源_要考虑的9大开源ERP系统
- 缘灭--HashMap系列之1.8put源码篇(三)
- 路由器无线桥接WDS