Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- typedef std::priority_queue<Event, vector<Event>, greater<Event> > EventQueue;
- while(!events.empty())
- {
- Event e = events.top();
- events.pop();
- const DirectedEdge &edge = e.current_edge->get_edge();
- if(e.type == Event::LEAVING)
- {
- Event ee = e;
- ee.type = Event::ENTERING;
- ++ee.current_edge;
- if(!ee.current_edge)
- {
- ee.path->set_arrival_time(ee.time);
- }
- else
- {
- ee.current_edge->set_departure_time(ee.time);
- ee.time += get_delay(ee.current_edge->get_edge());
- events.push(ee);
- }
- }
- else
- {
- Event ee = e;
- ee.type = Event::LEAVING;
- const FlowFloat time = queues[edge.get_index()].insert_traveler(e.time, e.path);
- ee.time = time;
- events.push(ee);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement