Advertisement
stas224

A9. Декстра - 1

May 26th, 2022
235
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.03 KB | None | 0 0
  1. #include<iostream>
  2. #include<vector>
  3. #include<set>
  4.  
  5. using namespace std;
  6.  
  7. const int inf = (1 << 31) - 1;
  8. int main ()
  9. {
  10. int n,start,finish;
  11. cin >> n >> start >> finish;
  12. start--;finish--;
  13. vector <vector<pair<int,int>>> g(n);
  14. for ( int i = 0; i < n; i++)
  15. {
  16. for ( int j = 0; j < n; j++)
  17. {
  18. int w;
  19. cin >> w;
  20. if (w != -1 && i != j)
  21. {
  22. g[i].push_back({j,w});
  23. }
  24. }
  25. }
  26.  
  27. vector <int> r(n,inf);
  28. r[start] = 0;
  29. set<pair<int,int>>s;
  30. s.insert({0,start});
  31. while (!s.empty())
  32. {
  33. int rmin = s.begin()->first;
  34. int cur = s.begin()->second;
  35. s.erase(s.begin());
  36. for (pair<int, int> to : g[cur])
  37. {
  38. if (r[cur] + to.second < r[to.first])
  39. {
  40. r[to.first] = r[cur] + to.second;
  41. s.insert({r[to.first], to.first});
  42. }
  43. }
  44. }
  45. if (r[finish] == inf)
  46. cout << -1;
  47. else
  48. cout << r[finish];
  49. }
  50.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement