Advertisement
Oppenheimer

BellmanFord(SSSP,neg weight ,path print)

Aug 19th, 2022
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.90 KB | None | 0 0
  1. void solve()
  2. {
  3.     vector<int> d (n, INF);
  4.     d[v] = 0;
  5.     vector<int> p (n, -1);
  6.     // e[i][0] is start , e[i][1] is end vertex .. e[i][2] is edge weight
  7.     for (int i=0;i<n-1;i++)
  8.     {
  9.         bool any = false;
  10.         for (int j = 0; j < m; ++j) // all edges are traversed n-1 times
  11.             if (d[e[j][0]] < INF)
  12.                 if (d[e[j][1]] > d[e[j][0]] + e[j][2])
  13.                 {
  14.                     d[e[j][1]] = d[e[j][0]] + e[j][2];
  15.                     p[e[j][1]] = e[j][0];
  16.                     any = true;
  17.                 }
  18.         if (any == false)  break;
  19.     }
  20.  
  21.     if (d[t] == INF)
  22.         cout << "No path from ";
  23.     else
  24.     {
  25.         vector<int> path;
  26.         // path from vertex t to given source
  27.         for (int cur = t; cur != -1; cur = p[cur])
  28.             path.push_back (cur);
  29.        
  30.        
  31.         reverse (path.begin(), path.end());
  32.  
  33.        
  34.     }
  35. }
  36.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement