inline void spfa(int s) {
for (int i = 0; i <= n; ++i) {
dis[i] = (1ll << 50), vis[i] = false, cnt[i] = 0;
}
dis[s] = 0, vis[s] = true, d.push(s);
while (d.size()) {
int u = d.front(); d.pop(); vis[u] = false;
for (int i = head[u]; ~i; i = nx[i]) {
int v = ver[i], Len = w[i];
if (dis[u] + Len < dis[v]) {
dis[v] = dis[u] + Len;
cnt[v] = cnt[u] + 1;
if (cnt[v] > n + 1) {
flag = false;
return;
}
if (vis[v] == 0) {
d.push(v);
vis[v] = true;
}
}
}
}
return;
}
这里的
cnt[u] = cnt[v] + 1
为什么不能写成
++cnt[v]