link
分析
一下是粗略的证明
先假设这样的解是存在的,对未知数Xi,假设一共有k组差分约束,则容易推出Xi <= min{ , , ,}
而通过建边用spfa得到的结果显然是满足这个条件的。为了维护图的连通性,需要加入超级源点
对于存在负环的情况,SPFA可以判断,此时负环的意义就是Xi <= Xi + 某负数,很显然不会存在符合差分约束的解。
code
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <queue>
#include <cstring>
using namespace std;
const int N = 1e5 + 10;
int dis[N], inq[N], tot[N], head[N];
int n, m, cnt = 0;
struct edge{
int to, nxt, val;
}e[N];
inline void