Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.62 KB | None | 0 0
  1. bool ford_bellman(int n, int s, int *d, vector<ford_edge> &ed, vector<int> &p = vector<int>(N,-1)){
  2.     for(int i = 0; i < n; ++i)
  3.         d[i] = INF;
  4.     d[s] = 0;
  5.     bool any = 0;
  6.     int anykek = -1;
  7.     for(int i = 0; i < n; ++i){
  8.         for(const auto& e: ed){
  9.             if(d[e.a]<INF&&d[e.a]+e.w<d[e.b]) d[e.b] = d[e.a]+e.w, p[e.b] = e.a, any = true, anykek = ed.b;
  10.         }
  11.     }
  12.     if(any){
  13.         d[anykek] = -INF;
  14.         for(int i = 0; i < n; ++i){
  15.             for(const auto& e: ed){
  16.                 if(d[e.a]<INF&&d[e.a]==-INF) d[e.b] = -INF, p[e.b] = e.a;
  17.             }
  18.         }
  19.     }
  20.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement