他死了
rt,两份代码,一份 SPFA,一份加了 SLF 优化,跑负环 3385。前者可过,后者 RE on #9。
bool spfa() {
queue<int> q;
q.push(s);
dis[s] = 0;
vis[s] = 1;
while (!q.empty()) {
int u = q.front(); q.pop();
vis[u] = 0;
for (auto e : graph[u]) {
int v = e.v, w = e.w;
if (dis[v] > dis[u] + w) {
dis[v] = dis[u] + w;
cnt[v] = cnt[u] + 1;
if (cnt[v] >= n) return 0;
if (!vis[v]) {
q.push(v);
vis[v] = 1;
}
}
}
}
return 1;
}
bool spfa() {
q.push_back(s);
dis[s] = 0;
vis[s] = 1;
while (!q.empty()) {
int u = q.front(); q.pop_front();
vis[u] = 0;
for (auto e : graph[u]) {
int v = e.v, w = e.w;
if (dis[v] > dis[u] + w) {
dis[v] = dis[u] + w;
cnt[v] = cnt[u] + 1;
if (cnt[v] >= n) return 0;
if (!vis[v]) {
if (dis[v] < dis[q.front()]) q.push_front(v);
else q.push_back(v);
vis[v] = 1;
}
}
}
}
return 1;
}
但是我记得 queue 的默认底层是 deque,求助