1 int spfa(int s,int t) { 2 memset(d, 0x3f, sizeof(d)); 3 d[s] = 0; 4 v[s] = 1; 5 q.push(s); 6 while (q.size()) { 7 int x = q.frout(); 8 q.pop(); 9 v[x] = 0; 10 for (int i = h[x]; i; i = e[i].n) { 11 if (d[e[i].t] > d[x] + e[i].w) { 12 d[e[i].t] = d[x] + e[i].w; 13 if (v[e[i].t] == 0) { 14 v[e[i]].t=1; 15 q.push(e[i].t); 16 } 17 } 18 } 19 } 20 return d[t] == 0x3f ? -1 : d[t]; 21 }
原文:https://www.cnblogs.com/Accpted/p/11203426.html