AcWing 851. spfa求最短路(解决负边权最短路)
题目链接
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求最短路(解决负边权最短路)相关推荐
- 851. spfa求最短路 Java题解 (spfa)
输入样例: 3 3 1 2 5 2 3 -3 1 3 4 输出样例: 2 算法思路: spfa最短路算法是对bellmanFord算法的优化,用于求单源最短路间的带负权的算法,一般时间复杂度为O(m) ...
- acwing基础课——spfa
由数据范围反推算法复杂度以及算法内容 - AcWing 常用代码模板3--搜索与图论 - AcWing 基本思想: 一般单源最短路我们都可以用spfa算法来做,如果过不了再尝试其他算法. spfa算法 ...
- 算法提高课-图论-负环-AcWing 904. 虫洞:spfa求负环裸题
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 负环:负环是这样的一个环,该环上的边权之和是负数. 存在负环的话,会对我们求最短路造成障碍,因为绕着这个负环转无数次,最短路越来越小 ...
- 算法提高课-图论-负环-AcWing 361. 观光奶牛:spfa判正环、负环、01分数规划、二分
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 题目要求ΣfiΣgi\frac{\Sigma{f_i}}{\Sigma{g_i}}ΣgiΣfi的最大值,这种问题称为01分数规 ...
- 算法基础课-搜索与图论-spfa-AcWing 852. spfa判断负环:spfa求负环板子
文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: dist[x] 表示从源点到x点的最短距离. spfa算法求最短路的算法步骤: 初始化一个队列,将起点入队. 取出队头元素t,遍历它 ...
- 堆优化版dijkstra算法:AcWing 850. Dijkstra求最短路 II
堆优化版dijkstra算法分析: 朴素版dijkstra的时间复杂度为O(n^2),主要瓶颈在于第1步的寻找全局最小值的过程. 可以用小根堆(C++STL priority_queue)对dist数 ...
- Floyd AcWing 854. Floyd求最短路
Floyd AcWing 854. Floyd求最短路 原题链接 AcWing 854. Floyd求最短路 算法标签 最短路 Floyd 思路 代码 #include<bits/stdc++. ...
- AcWing 850. Dijkstra求最短路 II
原题链接:AcWing 850. Dijkstra求最短路 II 给定一个 n 个点 m 条边的有向图,图中可能存在 重边 和 自环 ,所有边权均为 非负值 . 请你求出 1 号点到 n 号点的最短距 ...
- AcWing 850. Dijkstra求最短路 II【最短路】【堆优化版Dijkstra】
AcWing 850. Dijkstra求最短路 II 一.题目链接 二.题目分析 (一)算法标签 (二)解题思路 三.AC代码 四.其它题解 一.题目链接 AcWing 850. Dijkstra求 ...
最新文章
- Ubuntu 组态 Tomcat而每天的错误解决
- 在PHP中如何使用消息列队
- python同花顺交易接口是什么_我用 Python 预测了股票价格
- GoldenGate系统三:trouble shooting and log
- redhat/centos 搭建svn服务器环境
- 人工智能训练机器人的服务器,人工智能系统教会机器人如何在荒野中行走
- 利用HttpWebRequest和HttpWebResponse做黑客注射工具
- TextRank算法
- python服务端开发调试日志系统_Loglog首页、文档和下载 - 基于 Python2.7 的日志系统 - OSCHINA - 中文开源技术交流社区...
- eb8000软件怎样上传_威纶通触摸屏 如何上传程序 到电脑需要怎么处理
- ADC学习(4)—— 电压比较器
- vue spa项目转服务器渲染
- 内网渗透- *** PTH(传递哈希)***PTT(传递票据)***PTK(传递密钥)
- 判断linux文件、文件夹是否存在
- 调用系统相机和相册出现闪退报错No Activity found to handle Intent
- 比 996 更可怕的是职场 PUA
- 基于51单片机的脉搏测量仪protues仿真设计
- 基于MATLAB的filter的使用,低通、带通和高通滤波器设计
- arctanx麦克劳林公式推导过程_多元正态分布的推导、n维球体积面积的计算
- 【论文阅读】【ViT系列】ViT:一张图片用于大规模图像识别的Transformers(手动翻译)
热门文章
- python : class定义中的:__dict__,__setattr__,__getattribute__,__getattr__,
- thinkcmf apache rewrite文件
- union和union all区别
- 【BZOJ】4152: [AMPPZ2014]The Captain【SLF优化Spfa】
- 常见概率分布图表总结
- DataGridView导出到Excel的三个方法
- AC自动机(Aho-Corasick automation)(转)
- 人性歪曲的心理调适 一【浮躁心理、偏激心理、自卑心理、自杀心理、愤怒心理】...
- Python并行编程(七):多进程的基本使用和与多线程的差异
- select、poll与epoll的优缺点