U645546 【模板】单源最短路经
题目背景
# 本题很卡SPFA
[【模板】单源最短路径(标准版)](https://www.luogu.com.cn/problem/P4779)
你需要设计一个spfa __优化__ 版本,使其可以通过此题
本题难度不作参考
题目描述
给定一个 $n$ 个点,$m$ 条有向边的图(不保证无负权边),请你计算从 $s$ 出发,到每个点的距离。
数据不保证你能从 $s$ 出发到任意点,如不能到达,输出 $4557430888798830399$ (0x3f3f3f3f3f3f3f3f)。
输入格式
第一行为三个正整数 $n,m,s$ 。 第二行起 $m$ 行,每行三个整数 $u , v , w $ ,表示从 $u$ 到 $v$ 有一条权值为 $w$ 的有向边。
输出格式
如果有负环,输出`No answer.`
否则输出,一行 n 个空格分隔的整数,表示 s 到每个点的距离。
说明/提示
$1≤n≤8 \times 10^5 ;$
$1≤m≤2 \times 10^6 ;$
$1≤u,v≤n;$
$w\in[-10^{9},10^{9}]。$
更强数据见[【模板】单源最短路经 2](https://www.luogu.com.cn/problem/U645547)
### 为了防止有人说这题是错题,善良的出题人@[pengyulun](/user/1545565) 将 TA 的其中一个数据点标程公开:
```cpp
#include
using namespace std;
#define int long long
int n=8e5,m=2e6,mod=1e9,s[800005];
inline int rad(){
queue q;
return q.front();
}
struct node{int x,y,z;};
vector a;
inline int rd(int l,int r){
int w;
while (!(0