Advertisement
Guest User

Untitled

a guest
Nov 14th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.51 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <climits>
  4.  
  5. struct Edge {
  6. int from, to, time_in, time_out;
  7. Edge() : from(0), to(0), time_in(0), time_out(0) {};
  8. Edge(int _from, int _time_in, int _to, int _time_out) : from(_from), to(_to), time_in(_time_in), time_out(_time_out) {};
  9. };
  10.  
  11. class Graph {
  12. const int INF = INT_MAX/2;
  13. std::vector<Edge> edges;
  14. std::vector<int> moment;
  15. public:
  16. Graph(int vertexes) : moment(vertexes, INF) {};
  17. void AddEdge (int v, int time_in, int u, int time_out) {
  18. edges.push_back(Edge(v, time_in, u, time_out));
  19. }
  20. int shortestDistance (int start, int finish) {
  21. moment[start] = 0;
  22. for (int i = 0; i < edges.size(); ++i) {
  23. for (Edge e : edges) {
  24. if (moment[e.from] > e.time_in) {
  25. continue;
  26. }
  27. if (e.time_out < moment[e.to] && moment[e.from] != INF) {
  28. moment[e.to] = e.time_out;
  29. }
  30. }
  31. }
  32. return moment[finish];
  33. }
  34.  
  35. };
  36.  
  37.  
  38.  
  39. int main() {
  40. int n;
  41. std::cin >> n;
  42. Graph g(n);
  43. int start, finish;
  44. std::cin >> start >> finish;
  45. int k;
  46. std::cin >> k;
  47. for (int i = 0; i < k; ++i) {
  48. int departure, arrival, time_in, time_out;
  49. std::cin >> departure >> time_in >> arrival >> time_out;
  50. g.AddEdge(--departure, time_in, --arrival, time_out);
  51. }
  52. std::cout << g.shortestDistance(--start, --finish) << "\n";
  53. return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement