Advertisement
flash_7

0 - 1 BFS

Apr 6th, 2017
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.60 KB | None | 0 0
  1. struct Edge{
  2.     int v,w;
  3. };
  4.  
  5. int N,M;
  6. vector<Edge> Graph[Size];
  7. int dist[Size];
  8.  
  9. void ZeroOneBFS(int src){
  10.     deque<Edge> dq;
  11.     dq.push_front({src, 0});
  12.     for(int i = 0;i<=N;i++) dist[i] = inf;
  13.     dist[src] = 0;
  14.  
  15.     while(dq.size()>0){
  16.         Edge cur = dq.front();
  17.         dq.pop_front();
  18.  
  19.         for(int i = 0;i<Graph[cur.v].size();i++){
  20.             Edge e = Graph[cur.v][i];
  21.             int v = e.v, nw = cur.w + e.w;
  22.             if(nw < dist[v]){
  23.                 if(e.w == 0) dq.push_front({v, nw});
  24.                 else dq.push_back({v, nw});
  25.             }
  26.         }
  27.     }
  28. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement