AcWing 851. spfa求最短路 边权可能为负数。 链表 队列
#include <cstring>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
const int N = ;
int n, m;
int h[N], w[N], e[N], ne[N], idx;
int dist[N];
bool st[N];//标记数字是否在队列中,防止存重复的点
void add(int a, int b, int c) {
e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++ ;
}
int spfa() {
memset(dist, 0x3f, sizeof dist);
dist[] = ;
queue<int> q;//存储所有待更新的点
q.push();
st[] = true;//标记已经放进去了
while (q.size()) {
int t = q.front();
q.pop();
st[t] = false;//表示不在队列中了
for (int i = h[t]; i != -; i = ne[i]) {//更新t的所有临边
int j = e[i];
if (dist[j] > dist[t] + w[i]) {
dist[j] = dist[t] + w[i];
if (!st[j]) {//如果不在队列中,再加进去
q.push(j);
st[j] = true;//标记
}
}
}
}
if (dist[n] == 0x3f3f3f3f) return -;
return dist[n];
}
int main() {
scanf("%d%d", &n, &m);
memset(h, -, sizeof h);
while (m -- ) {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
add(a, b, c);
}
int t = spfa();
if (t == -) puts("impossible");
else printf("%d\n", t);
return ;
}
AcWing 851. spfa求最短路 边权可能为负数。 链表 队列的更多相关文章
- ACM - 最短路 - AcWing 851 spfa求最短路
		AcWing 851 spfa求最短路 题解 以此题为例介绍一下图论中的最短路算法 \(Bellman\)-\(Ford\) 算法.算法的步骤和正确性证明参考文章最短路径(Bellman-Ford算法 ... 
- acwing 851. spfa求最短路 模板
		地址 https://www.acwing.com/problem/content/description/853/ 给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数. 请你求出 ... 
- 851. spfa求最短路(spfa算法模板)
		给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数. 请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible. 数据保证不存在负权回路. 输入格式 ... 
- 851. spfa求最短路
		给定一个n个点m条边的有向图,图中可能存在重边和自环, 边权可能为负数. 请你求出1号点到n号点的最短距离,如果无法从1号点走到n号点,则输出impossible. 数据保证不存在负权回路. 输入格式 ... 
- AcWing 852. spfa判断负环   边权可能为负数。
		#include <cstring> #include <iostream> #include <algorithm> #include <queue> ... 
- 基于bellman-ford算法使用队列优化的spfa求最短路O(m),最坏O(n*m)
		acwing851-spfa求最短路 #include<iostream> #include<cstring> #include<algorithm> #inclu ... 
- ACM - 最短路 - AcWing 849 Dijkstra求最短路 I
		AcWing 849 Dijkstra求最短路 I 题解 以此题为例介绍一下图论中的最短路算法.先让我们考虑以下问题: 给定一个 \(n\) 个点 \(m\) 条边的有向图(无向图),图中可能存在重边 ... 
- Holy Grail【spfa求最短路】
		题目链接:https://www.jisuanke.com/contest/3004?view=challenges 题目大意: 1.一个无向图,给出六个顶点,添六条边,但是添边是有限制的.每次添边的 ... 
- spfa求次短路
		思路:先算出每个点到1的最短路d1[i],记录下路径,然后枚举最短路上的边 删掉之后再求一遍最短路,那么这时的最短路就可能是答案. 但是这个做法是错误的,可以被卡掉. 比如根据下面的例题生成的一个数据 ... 
随机推荐
- D - Three Integers
			https://codeforces.com/contest/1311/problem/D 本题题意:给出a,b,c三个数,a<=b<=c: 可以对三个数中任意一个进行+1或-1的操作: ... 
- 第一章 - HTTP概述
			1.1 HTTP——因特网的多媒体信使 可靠的数据传输协议 1.2 Web客户端和服务器 Web内容都是存储在Web服务器上的,使用HTTP协议,因此也称为HTTP服务器 HTTP客户端发出请求,提供 ... 
- 微信小程序期末复习
			过什么六一,复习不完了... 第1章作业 一.单选题(共10题,100.0分) 1以下哪个不是主流的手机操作系统? A.Android B.iOS C.Windows Phone D.Blackber ... 
- [TJOI2009] 猜数字 - 中国剩余定理
			现有两组数字,每组k个,第一组中的数字分别为:a1,a2,...,ak表示,第二组中的数字分别用b1,b2,...,bk表示.其中第二组中的数字是两两互素的.求最小的非负整数n,满足对于任意的i,n ... 
- Linux环境下C语言线程创建---简单代码
			在Linux环境下用C语言编写线程创建. //file name: pthreadtext.c #include <stdio.h> #include <pthread.h> ... 
- Android 开发 facebook分享,登陆,获取信息
			1 搭建开发环境 1.1 在Facebook官网SDK中,下载4.0.0的SDK包. 1.2 使用Eclipse导入SDK包中的Facebook工程,并添加android-supp ... 
- mybatis-plus - TableInfo
			在前面 的 inject() 方法中, 调用了一个 TableInfoHelper.initTableInfo(builderAssistant, modelClass) 方法, 来获取 表信息: T ... 
- HttpModule介绍
			https://cloud.tencent.com/developer/article/1347498 引言 Http 请求处理流程 和 Http Handler 介绍 这两篇文章里,我们首先了解了H ... 
- 自己动手系列----使用数组实现一个简单的Map
			数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同.Java 语言中提供的数组是用来存储固定大小的同类型元素. 这里提一下,数组的优缺点: 优点: 1. 使用索 ... 
- [LOJ144] DFS 序 1 - DFS序 线段树
			为熟悉机房键盘而划水 #include <bits/stdc++.h> using namespace std; #define int long long const int N = 4 ... 
