躁动的小Z

时间限制: 1 Sec  内存限制: 128 MB

题目描述

你猜怎么样?小Z追到Gakki了!Gakki邀请小Z去她家共进晚餐,小Z喜出望外。小Z的家和Gakki的家隔着几个街区,所以他决定乘坐公交车前往

Gakki家赴约。小Z的家在公交站台的起始站(编号为1),而Gakki家正好在末站(编号为n)。城市中有许多公交站台,有些站台之间可以通过公交

线路互相到达。现在给你n个公交站台和m条不同的公交线路的时间花费,请你帮助小Z分析一下最短的可以从家里来到Gakki身边的路径?

输入

有多组测试样例。

第一行两个正整数n,m(2≤n≤10^5,0≤m≤10^5),代表站台数与公交线路数量。

接下来m行每行三个正整数a[i],b[i],w[i],代表从公交站a[i]到b[i]需要花费的时间为w[i]。(1≤a[i],b[i]≤n,1≤w[i]≤10^6)

注意:公交线路可能会产生环,并且两个站台之间可能有多条公交线路。

输出

单独一行,输出花费时间最小时小Z经过的公交站台编号,以空格隔开;如果小Z无法到达Gakki的家,则输出-1.

样例输入

5 6
1 2 2
2 5 5
2 3 4
1 4 1
4 3 3
3 5 1
10 10
1 5 12
2 4 140
2 10 149
3 6 154
3 7 9
3 8 226
3 10 132
4 10 55
5 8 33
7 8 173

样例输出

1 4 3 5
1 5 8 7 3 10

题解

在dijkstra算法模板的基础上加上一个pre数组,用于记录该节点的上一个节点,即该点是经过哪一点才到达该点的。pre数组具体在边松弛的过程中进行重新赋值,松弛成功就将pre值记录k点,及该点是由起点经过k点后所得到的。最后把pre数组中的值递归输出一遍即可。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e3+9;
#define inf 0x3f3f3f3f //需将road及dis初始化为正无穷inf
int n,m;int pre[maxn];//记录到达该点的上一个点的坐标
int dis[maxn];  //储存各个点到源点的最短距离,dis[s]为0
int road[maxn][maxn];  //两点之间直接距离关系
bool vis[maxn];     //判断源点到该点的距离是否为最短距离void dijkstra(int s,int e)
{//s为起点,e为终点memset(vis, false, sizeof(vis));//标记是否求出最短路径vis[s] = true;//标记起点到这一点的最小距离已经求出for(int i = 1; i <= n; i++){dis[i] = road[s][i];//初始化起点到每一个点的距离pre[i]=s;//初始化路径,每个点的上一个点为起点}for(int u = 1; u < n; u++){int minD = inf,k = -1;for(int i = 1; i<= n; i++){   //寻找没有访问过的最短路if(!vis[i]&&dis[i]<minD){k = i;//记录下标minD = dis[i];//记录最小值}}if(k==e)    break;vis[k] = true;//标记已经访问过//松弛操作for(int i = 1; i<= n; i++){if(!vis[i]&&dis[k]+road[k][i]<dis[i]){dis[i]=dis[k]+road[k][i];pre[i]=k;}//if}//for}
}
void print(int cur)
{if(cur==1){printf("1");return;}print(pre[cur]);printf(" %d",cur);
}
int main()
{while(scanf("%d%d",&n,&m)!=EOF){memset(road,inf,sizeof(road));memset(pre,0,sizeof(pre));for(int i=1;i<=m;i++){int a,b,d;scanf("%d%d%d",&a,&b,&d);road[a][b]=road[b][a]=min(d,road[a][b]);//起点是fans[i],终点是S}dis[1]=0;//起点dijkstra(1,n);if(dis[n]==inf)    printf("-1");else   {//printf("dis=%d\n%d:%d\n",dis[i],i,pre[i]);print(n);}printf("\n");}return 0;
}

躁动的小Z 最短路+路径记录相关推荐

  1. Wappo BFS求最短路+路径记录

    点击打开链接 描述 Einstein最近迷上了一款手机益智游戏Wappo,但是由于IQ和RP等诸多原因,他一直无法通关,他希望你编一个程序来玩这个游戏. Wappo的游戏规则是这样的:在一张m*n的地 ...

  2. 2017.3.22 小z的袜子 思考记录

    第一次写莫队,,所以简单学习了一下比较方便的写法:: 第一步当然是分块. 然后左端点按块排序,左端点在一个块的按右端点排序.. 之所以用块,,是为了防止左端点相近时右端点来回跳... 所以全当暴力处理 ...

  3. floyd和迪杰斯特拉算法的路径记录方法。

    先说迪杰斯特拉,先看题目吧. 题目1 这题就是迪杰斯特拉的路径记录算法题啊,还记录了最小路径个数. 代码如下 #include<iostream> #include<cstdio&g ...

  4. ACM练习 小Z来讲排名规则(WA)【C++ stable_sort稳定排序】

    描述 本次比赛严格按照ACM的排名规则进行,但可能很多小伙伴并不太了解这个排名方法,今天小Z来给大家简单说明一下.每个人的排名根据他解出的题目数量.做题时间还有错误提交次数决定,呃...在某些特殊情况 ...

  5. BZOJ2038 : [2009国家集训队]小Z的袜子(hose)(莫队算法)

    2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MB Submit: 19269 Solved: 8851 [Sub ...

  6. uoj#422. 【集训队作业2018】小Z的礼物

    uoj#422. [集训队作业2018]小Z的礼物 题目描述 Solution 所有礼物全部取到的方案数并不好求,因此我们考虑min−maxmin-maxmin−max容斥,转化为第一次取到集合中某一 ...

  7. 1775. [国家集训队2010]小Z的袜子

    [题目描述] 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命-- 具体来说,小Z把这N只袜子从1到 ...

  8. 清橙A1206 小Z的袜子(莫队算法)

    A1206. 小Z的袜子 时间限制:1.0s   内存限制:512.0MB   总提交次数:744   AC次数:210   平均分:44.44 将本题分享到:        查看未格式化的试题    ...

  9. 洛谷 P2191 小Z的情书

    题目背景 众所周知,小Z是高富帅的典范和代表,所以他很很多很多的妹纸.小Z要写情书给他的妹纸了,作为一个谨慎的人,他当然不会直白的写在纸上(否则被那群损友发现岂不糟了?). 题目描述 虽然小Z谨小慎微 ...

最新文章

  1. R语言ggplot2可视化使用ggplotly(plotly version of R)可视化散点图(scatter plot)
  2. LIBSVM 多分类问题- 葡萄酒种类识别
  3. 【MM模块】 Goods Issue 发货
  4. python 使用pexpect实现自动交互示例
  5. 【ruby】ruby学习笔记之--环境搭建
  6. 深度学习TensorFlow生产环境部署(环境准备篇)
  7. myeclipse服务器未能创建视图:抛出意外异常。
  8. 计算机科学导论实验,《计算机科学导论》实验.doc
  9. 《HelloGitHub》第 67 期
  10. 柳传志退休,联想的贸工技路线对错由后人评说
  11. 自定义桌面右键菜单-Win 10 版
  12. 初识R语言介绍以及常见的问题
  13. android webview goback 刷新,解决webview调用goBack()返回上一页自动刷新闪白的情况
  14. 一文搞懂ECU休眠唤醒之利器-TJA1145
  15. Python 安装opencv-python模块
  16. 卡普公司鸿蒙手机,每人日接受信息量相当于看174份报纸
  17. 正睿19暑期B班DAY1-1 概率与期望
  18. linux kernel idr机制
  19. Go语言开发环境安装
  20. GD32F303调试小记(一)之USART(接收中断、接收空闲中断+DMA、发送DMA)

热门文章

  1. 学习总结:CSS(一)定义方式、选择器、选择器权重
  2. 《Python 数据分析》笔记——pandas
  3. js的作用域链,原型链,以及闭包函数理解
  4. websocket在web项目中的使用
  5. 0728pm 控制器
  6. jdk jre jvm 关系
  7. 压力测试+webbench+ab+tsung+siege
  8. 使用AOP动态调用WebService
  9. max与top的效率
  10. 印象笔记三级目录_我的印象笔记使用手册