Akatsuki13

Bellman Ford 2

Oct 28th, 2016
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.67 KB | None | 0 0
  1. #include <iostream>
  2. #include <queue>
  3. #include <cmath>
  4. #include <vector>
  5.  
  6. using namespace std;
  7.  
  8. typedef double T;
  9. typedef vector<T> VT;
  10. typedef vector<VT> VVT;
  11.  
  12. typedef vector<int> VI;
  13. typedef vector<VI> VVI;
  14.  
  15. bool BellmanFord (const VVT &w, VT &dist, VI &prev, int start){
  16.   int n = w.size();
  17.   prev = VI(n, -1);
  18.   dist = VT(n, 1000000000);
  19.   dist[start] = 0;
  20.  
  21.   for (int k = 0; k < n; k++){
  22.     for (int i = 0; i < n; i++){
  23.       for (int j = 0; j < n; j++){
  24.         if (dist[j] > dist[i] + w[i][j]){
  25.           if (k == n-1) return false;
  26.           dist[j] = dist[i] + w[i][j];
  27.           prev[j] = i;
  28.         }
  29.       }
  30.     }
  31.   }
  32.  
  33.   return true;
  34. }
Add Comment
Please, Sign In to add comment