Guest User

Untitled

a guest
Nov 16th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <locale.h>
  3. #include <vector>
  4.  
  5. using namespace std;
  6.  
  7. const int INF = 0X7FFFFFFF;
  8. const int n = 6;
  9.  
  10. void out(vector<int> p, int start, int end)
  11. {
  12. if (end == start)
  13. {
  14. cout << end + 1;
  15. return;
  16. }
  17. out(p, start, p[end]);
  18. cout << '-' << end + 1;
  19. return;
  20. }
  21.  
  22. int main()
  23. {
  24.  
  25. setlocale(LC_ALL, "Russian");
  26. vector<vector<pair<int, double>>> matr(n);
  27.  
  28. matr[0].resize(3);
  29. matr[0][0].first = 1;
  30. matr[0][0].second = 3;
  31. matr[0][1].first = 2;
  32. matr[0][1].second = 2;
  33. matr[0][2].first = 3;
  34. matr[0][2].second = 4;
  35.  
  36. matr[1].resize(2);
  37. matr[1][0].first = 4;
  38. matr[1][0].second = 2;
  39. matr[1][1].first = 5;
  40. matr[1][1].second = 4;
  41.  
  42. matr[2].resize(1);
  43. matr[2][0].first = 4;
  44. matr[2][0].second = 1;
  45.  
  46. matr[3].resize(2);
  47. matr[3][0].first = 2;
  48. matr[3][0].second = 1;
  49. matr[3][1].first = 5;
  50. matr[3][1].second = 3.5;
  51.  
  52. matr[4].resize(1);
  53. matr[4][0].first = 5;
  54. matr[4][0].second = 3;
  55.  
  56.  
  57. int start = 0, end = 5;
  58. vector<int> d(n, INF), p(n);
  59. d[start] = 0;
  60. vector<bool> u(n);
  61.  
  62. for (int i = 0; i < n; i++)
  63. {
  64. int v = -1;
  65. for (int j = 0; j < n; j++)
  66. if (!u[j] && (v == -1 || d[j] < d[v]))
  67. v = j;
  68. if (d[v] == INF)
  69. break;
  70. u[v] = true;
  71.  
  72. for (int j = 0; j < matr[v].size(); j++)
  73. {
  74. int to = matr[v][j].first;
  75. int len = matr[v][j].second;
  76. if (d[v] + len < d[to])
  77. {
  78. d[to] = d[v] + len;
  79. p[to] = v;
  80. }
  81. }
  82. }
  83.  
  84. cout << "Путь: ";
  85. out(p, start, end);
  86.  
  87. cout << endl << "Длина пути: " << d[end] << endl;
  88.  
  89. system("pause");
  90. return 0;
  91. }
Add Comment
Please, Sign In to add comment