Advertisement
Guest User

dijsktra

a guest
Sep 16th, 2013
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.69 KB | None | 0 0
  1. #define V 20
  2. typedef pair<int, int> ii;
  3. vector<ii> G[V];
  4. int D[V];
  5.  
  6. void dijkstra(int s)
  7. {
  8.     for (int i = 0; i < V; i++) {
  9.         D[i] = INT_MAX;
  10.     }
  11.     D[s] = 0;
  12.     set<ii> Q;
  13.     Q.insert(ii(0,s));
  14.     while (!Q.empty()) {
  15.         int u = Q.begin()->second;
  16.         Q.erase(Q.begin());
  17.         for (vector<ii> :: iterator it = G[u].begin(); it != G[u].end(); it++) {
  18.             int v = it->first;
  19.             int w = it->second;
  20.             if (D[v] > D[u] + w) {
  21.                 if (D[v] != INT_MAX) {
  22.                     Q.erase(Q.find(ii(D[v],v)));
  23.                 }
  24.                 D[v] = D[u] + w;
  25.                 Q.insert(ii(D[v],v));
  26.             }
  27.         }
  28.     }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement