bool Bellman_Ford() { for (int i = 0; i < n; i++) { bool jud = false; for (int j = 1; j <= n; j++) for (int k = h[j]; ~k; k = nxt[k]) if (dist[j] > dist[p[k]] + w[k]) dist[j] = dist[p[k]] + w[k], jud = true; if (!jud) break; } for (int i = 1; i <= n; i++) for (int j = h[i]; ~j; j = nxt[j]) if (dist[i] > dist[p[j]] + w[j]) return false; return true;}
Python
def Bellman_Ford(): for i in range(0, n): jud = False for j in range(1, n + 1): while ~k: k = h[j] if dist[j] > dist[p[k]] + w[k]: dist[j] = dist[p[k]] + w[k] jud = True k = nxt[k] if jud == False: break for i in range(1, n + 1): while ~j: j = h[i] if dist[i] > dist[p[j]] + w[j]: return False j = nxt[j] return True