Advertisement
anutka

Untitled

Nov 17th, 2020
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.36 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. class Edge {
  5. public:
  6. int begin;
  7. int end;
  8. int weight;
  9. Edge(int begin, int end, int weight) : begin(begin), end(end), weight(weight){
  10. }
  11. };
  12. class Graph {
  13. private:
  14. std::vector<Edge> edges;
  15. int size;
  16. public:
  17. Graph (int size, std::vector<Edge> & edges) : edges(edges), size(size) {
  18. }
  19. int CountDistanceLessThanK (int start, int end, int k) {
  20. std::vector<int> result(size, 100000005);
  21. std::vector<int> currentres (size, 1000000005);
  22. result[start] = 0;
  23. currentres[start] = 0;
  24. for (int i = 0; i < k ; i++) {
  25. for (int j = 0; j < edges.size(); j++) {
  26. if(currentres[edges[j].end] > result[edges[j].begin] + edges[j].weight) {
  27. currentres[edges[j].end] = result[edges[j].begin] + edges[j].weight;
  28. }
  29. }
  30. result = currentres;
  31. }
  32. return (result[end] < 100000005) ? result[end] : -1;
  33. }
  34. };
  35. int main() {
  36. std::vector<Edge> data;
  37. int N, M, K, S, F, S0, F0, P0;
  38. std::cin >> N >> M >> K >> S >> F;
  39. for (int i = 0; i < M; i++) {
  40. std::cin >> S0 >> F0 >> P0;
  41. Edge newe(S0-1, F0-1, P0);
  42. data.push_back(newe);
  43. }
  44. Graph graph(N, data);
  45. std::cout << graph.CountDistanceLessThanK(S-1, F-1, K);
  46. return 0;
  47. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement