Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2014
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.73 KB | None | 0 0
  1. typedef std::priority_queue<Event, vector<Event>, greater<Event> > EventQueue;
  2.  
  3. while(!events.empty())
  4. {
  5. Event e = events.top();
  6. events.pop();
  7.  
  8. const DirectedEdge &edge = e.current_edge->get_edge();
  9.  
  10. if(e.type == Event::LEAVING)
  11. {
  12. Event ee = e;
  13.  
  14. ee.type = Event::ENTERING;
  15.  
  16. ++ee.current_edge;
  17.  
  18. if(!ee.current_edge)
  19. {
  20. ee.path->set_arrival_time(ee.time);
  21. }
  22. else
  23. {
  24. ee.current_edge->set_departure_time(ee.time);
  25. ee.time += get_delay(ee.current_edge->get_edge());
  26.  
  27. events.push(ee);
  28. }
  29. }
  30. else
  31. {
  32. Event ee = e;
  33. ee.type = Event::LEAVING;
  34.  
  35. const FlowFloat time = queues[edge.get_index()].insert_traveler(e.time, e.path);
  36.  
  37. ee.time = time;
  38.  
  39. events.push(ee);
  40. }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement