题面

思路:

最短路问题。加上疲劳度看似很难,但只要用一个记录疲劳度的数组就好啦,另外还需要记录路径。

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>#define fill( a ) memset( a, 0x3f3f3f, sizeof( a ) )
#define hahaclear( a ) memset( a, 0, sizeof( a ) )using namespace std;struct haha { int next, to, dis;
}edge[200010];int dis[100010], head[200010];
int num_edge, n, m, cnt, tm, p[200010]; //p数组是疲劳度
bool vis[100010];
int pre[200010];    //记录路径 void add( int from, int to, int dis ) {edge[++num_edge].next = head[from];edge[num_edge].to = to;edge[num_edge].dis = dis;head[from] = num_edge;
}void spfa( int s ) {fill( dis );hahaclear( vis );memset( pre, -1, sizeof( pre ) );queue<int> q;vis[s] = 1;dis[s] = 0;pre[s] = -1;q.push( s );while( !q.empty() ) {int u = q.front();q.pop();vis[u] = 0;for( int i = head[u]; i != -1; i = edge[i].next ) {int v = edge[i].to;if( dis[v] > dis[u] + edge[i].dis + p[u] ) {dis[v] = dis[u] + edge[i].dis + p[u]; pre[v] = u;p[v] = p[u] + 1;   //超级重要!! if( !vis[v] ) {vis[v] = 1;q.push( v );}}}}
}void print( int x ) {  //输出路径 if( pre[x] == -1 ) {printf( "%d ", x );return ;}print( pre[x] );printf( "%d ", x );return ;
}int main() {memset( head, -1, sizeof( head ) );scanf( "%d%d", &n, &m );for( int i = 1; i <= m; i++ ) {int u, v, c;scanf( "%d%d%d", &u, &v, &c );add( u, v ,c );}spfa( 1 );printf( "%d\n", dis[n] );print( n );return 0;
}

洛谷P2832 行路难相关推荐

  1. 洛谷 P2832 行路难

    题面 这个最短路有点special,会有疲劳度的加成效应,这个时候应该怎么办呢? 难就难在,如果走一条路比另一条路长,但是用的边少,那么这条路并不一定就更差. 我们要是能解决这个问题,就可以做出本题. ...

  2. 洛谷:P2832 行路难(堆优化Dijkstra(错解)bfs(正解) + 记录路径)

    洛谷:P2832 行路难 写这道题确实是行路难- 此题的最短路约束不只是边权,还有边数(每经过一条边,之后经过的边权值都 +1+1+1 ) 从期望的角度分析,我们肯定是想 尽可能走的路程越短,走得路径 ...

  3. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  4. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  5. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  6. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

  7. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

  8. 洛谷P1417 烹调方案

    洛谷P1417 烹调方案 如果是一般的01背包的话 选的先后是没关系的 但是这题选的先后是有关系的,因为他的价值是随着时间而变化的, 而你的01背包是做不到先选2再选1的 那么我们就跟国王游戏一样 用 ...

  9. 记忆优化搜索(简单题)(洛谷P3183 [HAOI2016]食物链 )( P5635 【CSGRound1】天下第一 )

    昨天做了蓝桥杯的时候,发现自己对于记忆优化搜索甚是不熟悉,所以今天随便找了几个基础题做做,顺便写下两片题解,顺便用了一下devc++敲的代码,发现没有代码补全真的可以说是灰常难受了... 洛谷P318 ...

最新文章

  1. 北汽蓝谷极狐阿尔法S与T
  2. bzoj1036: [ZJOI2008]树的统计Count 树链剖分
  3. Java即时编译:不仅仅是一个流行词
  4. python如何读取文本_python怎么读取文本文件
  5. KMP算法、AC自动机算法的原理介绍以及Python实现
  6. 定时压缩log日志文件
  7. 怎么解决TortoiseGit每次Pull或者Push都需要输用户名密码的问题
  8. node中的数据持久化
  9. 直播和VR的代入感太强,淘宝也忍不住推出了VR直播
  10. JAVA入门到精通-第64讲-sql server备份恢复
  11. Linux用户管理命令和压缩解压命令
  12. ubuntu系统安装初始化脚本
  13. 找网络高手联系方式_怎么才能联系到网络高手(找网络大牛联系方式)
  14. 一键清空朋友圈软件_微信清理朋友圈app下载-微信清理朋友圈下载v1.8.0 安卓版-西西软件下载...
  15. 解决SQLServer复制到Excel中内容换行问题
  16. python 文字识别 准确率_关于OCR图片文本检测、推荐一个 基于深度学习的Python 库!...
  17. 低分辨率和畸变严重的棋盘格角点的自动检测
  18. 常见状态码(200、403、404、500)
  19. DBCA启动问题 (linux)
  20. Python调用百度AI接口

热门文章

  1. C13-COBOL 文件处理动词
  2. WordPress码支付支付插件 WordPress付费阅读查看插件 付费下载插件
  3. 计算机视觉专业排名,2020美国人工智能专业排名TOP10!
  4. STM32移植STemwin
  5. Pytorch学习之torch----Reduction Ops
  6. Java-PTA 无聊的小明来数1
  7. Android 加密 AES
  8. Android Binder学习指南
  9. 华为nova7se和华为nova7的区别 哪个好
  10. STM32F4 | 新建工程模板——寄存器版本 | HAL库入门 | 新建工程模板——库函数版本