Advertisement
Korotkodul

Dij

Aug 1st, 2022
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. #include <queue>
  5. #include <algorithm>
  6. #include <string>
  7. #include <stack>
  8. #include <set>
  9. #include <map>
  10. #define pii pair <int,int>
  11. #define vec vector
  12. using namespace std;
  13. using ll = long long;
  14. using ld = long double;
  15. using db = double;
  16. void cv(vector <int> &v){
  17. for (auto x: v) cout<<x<<' ';
  18. cout<<"\n";
  19. }
  20.  
  21. void cvl(vector <ll> &v){
  22. for (auto x: v) cout<<x<<' ';
  23. cout<<"\n";
  24. }
  25.  
  26.  
  27. void cvv(vector <vector <int> > &v){
  28. for (auto x: v) cv(x);
  29. cout<<"\n";
  30. }
  31.  
  32. void cvb(vector <bool> v){
  33. for (bool x: v) cout<<x<<' ';
  34. cout<<"\n";
  35. }
  36.  
  37. void cvs(vector <string> v){
  38. for (auto a: v){
  39. cout<<a<<"\n";
  40. }
  41. }
  42.  
  43. void cvp(vector <pii> a){
  44. for (auto p: a){
  45. cout<<p.first<<' '<<p.second<<"\n";
  46. }
  47. cout<<"\n";
  48. }
  49.  
  50. vector <vector <pii> > G;
  51. vector <int> d;
  52. int n,fr, to;
  53.  
  54. const int inf = 2e9;
  55.  
  56. void dij(){
  57. d[fr] = 0;
  58. set <pii> Q;
  59. for (auto p: G[fr]){
  60. Q.insert(p);
  61. }
  62. while (!Q.empty()){
  63. int v = Q.begin()->second;
  64. Q.erase(Q.begin());
  65. for (pii p: G[v]){
  66. int u = p.second, l = p.first;
  67. int newd = d[v] + l;
  68. if (newd < d[u]){
  69. Q.erase({u, d[u]});
  70. d[u] = newd;
  71. Q.insert({d[u], u});
  72. }
  73. }
  74. }
  75. }
  76.  
  77. int main()
  78. {
  79. ios::sync_with_stdio(0);
  80. cin.tie(0);
  81. cout.tie(0);
  82. cin>>n>>fr>>to;
  83. d.assign(n, inf);
  84. fr--;
  85. to--;
  86.  
  87. G.resize(n);
  88. for (int i=0;i<n;++i){
  89. for (int j=0;j<n;++j){
  90. int l; cin>>l;
  91. if (l==-1 || i == j) continue;
  92. G[i].push_back({l, j});
  93. }
  94. }
  95. dij();
  96. cout<<d[to];
  97. }
  98.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement