【模板】spfa
int dis_spfa[maxn]; bool vis_spfa[maxn]; queue<int>q_spfa; void spfa(int x) { mem(dis_spfa, 0x3f); mem(vis_spfa, false); dis_spfa[x] = 0; q_spfa.push(x); vis_spfa[x] = true; while (!q_spfa.empty()) { int t = q_spfa.front(); q_spfa.pop(); vis_spfa[t] = false; for (Re int i = head[t]; i != -1; i = e[i].nxt) { int v = e[i].v; int w = e[i].w; if (dis_spfa[v] > dis_spfa[t] + w) { dis_spfa[v] = dis_spfa[t] + w; if (!vis_spfa[v]) { q_spfa.push(v); vis_spfa[v] = true; } } } } }
浙公网安备 33010602011771号