题目链接

https://www.acwing.com/problem/content/853/

思路

就是SPFA求最短路的模板,其思路大概是我们要更新所有能被松弛的边,然后更新松弛的边的边,然后就类似BFS的方式逐步更新

代码

#include<bits/stdc++.h>
using namespace std;
//----------------自定义部分----------------
#define ll long long
#define mod 1000000007
#define endl "\n"
#define PII pair<int,int>
#define INF 0x3f3f3f3fint dx[4]={0,-1,0,1},dy[4]={-1,0,1,0};ll ksm(ll a,ll b) {ll ans = 1;for(;b;b>>=1LL) {if(b & 1) ans = ans * a % mod;a = a * a % mod;}return ans;
}ll lowbit(ll x){return -x & x;}const int N = 2e6+10;
//----------------自定义部分----------------
int n,m,q;vector<PII> E[N];
int dis[N];
bool vis[N];void spfa(){memset(dis,0x3f,sizeof dis);dis[1] = 0;queue<int> que;que.push(1);vis[1] = true;while(!que.empty()){int t = que.front();que.pop();vis[t] = false;for(int i = 0,l = E[t].size();i < l; ++i) {int j = E[t][i].first,k = E[t][i].second;if(dis[j] > dis[t] + k) {dis[j] = dis[t] + k;if(!vis[j])vis[j] = true,que.push(j);}}}if(dis[n] >= INF) cout<<"impossible"<<endl;else cout<<dis[n]<<endl;
}int main()
{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);cin>>n>>m;int u,v,w;for(int i = 0;i < m; ++i) {cin>>u>>v>>w;E[u].push_back({v,w});}spfa();return 0;
}

AcWing 851. spfa求最短路(解决负边权最短路)相关推荐

  1. 851. spfa求最短路 Java题解 (spfa)

    输入样例: 3 3 1 2 5 2 3 -3 1 3 4 输出样例: 2 算法思路: spfa最短路算法是对bellmanFord算法的优化,用于求单源最短路间的带负权的算法,一般时间复杂度为O(m) ...

  2. acwing基础课——spfa

    由数据范围反推算法复杂度以及算法内容 - AcWing 常用代码模板3--搜索与图论 - AcWing 基本思想: 一般单源最短路我们都可以用spfa算法来做,如果过不了再尝试其他算法. spfa算法 ...

  3. 算法提高课-图论-负环-AcWing 904. 虫洞:spfa求负环裸题

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 负环:负环是这样的一个环,该环上的边权之和是负数. 存在负环的话,会对我们求最短路造成障碍,因为绕着这个负环转无数次,最短路越来越小 ...

  4. 算法提高课-图论-负环-AcWing 361. 观光奶牛:spfa判正环、负环、01分数规划、二分

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 题目要求ΣfiΣgi\frac{\Sigma{f_i}}{\Sigma{g_i}}Σgi​Σfi​​的最大值,这种问题称为01分数规 ...

  5. 算法基础课-搜索与图论-spfa-AcWing 852. spfa判断负环:spfa求负环板子

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: dist[x] 表示从源点到x点的最短距离. spfa算法求最短路的算法步骤: 初始化一个队列,将起点入队. 取出队头元素t,遍历它 ...

  6. 堆优化版dijkstra算法:AcWing 850. Dijkstra求最短路 II

    堆优化版dijkstra算法分析: 朴素版dijkstra的时间复杂度为O(n^2),主要瓶颈在于第1步的寻找全局最小值的过程. 可以用小根堆(C++STL priority_queue)对dist数 ...

  7. Floyd AcWing 854. Floyd求最短路

    Floyd AcWing 854. Floyd求最短路 原题链接 AcWing 854. Floyd求最短路 算法标签 最短路 Floyd 思路 代码 #include<bits/stdc++. ...

  8. AcWing 850. Dijkstra求最短路 II

    原题链接:AcWing 850. Dijkstra求最短路 II 给定一个 n 个点 m 条边的有向图,图中可能存在 重边 和 自环 ,所有边权均为 非负值 . 请你求出 1 号点到 n 号点的最短距 ...

  9. AcWing 850. Dijkstra求最短路 II【最短路】【堆优化版Dijkstra】

    AcWing 850. Dijkstra求最短路 II 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 850. Dijkstra求 ...

最新文章

  1. Ubuntu 组态 Tomcat而每天的错误解决
  2. 在PHP中如何使用消息列队
  3. python同花顺交易接口是什么_我用 Python 预测了股票价格
  4. GoldenGate系统三:trouble shooting and log
  5. redhat/centos 搭建svn服务器环境
  6. 人工智能训练机器人的服务器,人工智能系统教会机器人如何在荒野中行走
  7. 利用HttpWebRequest和HttpWebResponse做黑客注射工具
  8. TextRank算法
  9. python服务端开发调试日志系统_Loglog首页、文档和下载 - 基于 Python2.7 的日志系统 - OSCHINA - 中文开源技术交流社区...
  10. eb8000软件怎样上传_威纶通触摸屏 如何上传程序 到电脑需要怎么处理
  11. ADC学习(4)—— 电压比较器
  12. vue spa项目转服务器渲染
  13. 内网渗透- *** PTH(传递哈希)***PTT(传递票据)***PTK(传递密钥)
  14. 判断linux文件、文件夹是否存在
  15. 调用系统相机和相册出现闪退报错No Activity found to handle Intent
  16. 比 996 更可怕的是职场 PUA
  17. 基于51单片机的脉搏测量仪protues仿真设计
  18. 基于MATLAB的filter的使用,低通、带通和高通滤波器设计
  19. arctanx麦克劳林公式推导过程_多元正态分布的推导、n维球体积面积的计算
  20. 【论文阅读】【ViT系列】ViT:一张图片用于大规模图像识别的Transformers(手动翻译)

热门文章

  1. python : class定义中的:__dict__,__setattr__,__getattribute__,__getattr__,
  2. thinkcmf apache rewrite文件
  3. union和union all区别
  4. 【BZOJ】4152: [AMPPZ2014]The Captain【SLF优化Spfa】
  5. 常见概率分布图表总结
  6. DataGridView导出到Excel的三个方法
  7. AC自动机(Aho-Corasick automation)(转)
  8. 人性歪曲的心理调适 一【浮躁心理、偏激心理、自卑心理、自杀心理、愤怒心理】...
  9. Python并行编程(七):多进程的基本使用和与多线程的差异
  10. select、poll与epoll的优缺点