Advertisement
Infiniti_Inter

dijkstra

May 19th, 2020
1,149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.94 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #define ll long long
  3. #define sqr(x) x * x
  4. #define pr(x) {x.first, x.second}
  5. #define forn( i, n) for (int i = 0; i < (int)n; ++i)
  6. #define all(i) i.begin(), i.end()
  7. #define rall(i) i.rbegin(), i.rend()
  8. #include <stdio.h>
  9. #include <iostream>
  10. #include <cstdio>
  11. #include <string>
  12. #include <vector>
  13. #include <algorithm>
  14. #include <cmath>
  15. #include <fstream>
  16. #include <queue>
  17. #include <ctime>
  18. #include <map>
  19. #include <set>
  20. #include <random>
  21. #include<iomanip>
  22. #include<future>
  23. template<typename T>
  24. inline  T abs(const T& a)
  25. {
  26.     return a < 0 ? -a : a;
  27. }
  28. using namespace std;
  29.  
  30. void boost()
  31. {
  32. #ifdef _DEBUG
  33.     freopen("input.txt", "r", stdin);
  34.     freopen("output.txt", "w", stdout);
  35. #endif // DEBUG
  36.  
  37.  
  38.  
  39.     ios_base::sync_with_stdio(false);
  40.     cin.tie(nullptr);
  41.     cout.tie(nullptr);
  42. }
  43. void spr(int x) { cout << setprecision(x) << fixed; }
  44. long long MOD = 1e9 + 7;
  45. long double P = 3.141592653589793238462643;
  46. int INF = 2e9 + 13;
  47.  
  48. long long math(int k)
  49. {
  50.     return 1LL * k * (k + 1) / 2;
  51. }
  52.  
  53. int g[7][7];
  54.  
  55. bool used[7];
  56. int n = 7;
  57. void BFS(int v)
  58. {
  59.     used[v] = true;
  60.     cout << v <<" ";
  61.     for (int i = 0; i < n; ++i)
  62.         if (!used[i] && g[v][i] != 0)
  63.         {
  64.             BFS(i);
  65.             used[i] = true;
  66.         }
  67. }
  68.  
  69. int main() {
  70.     boost();
  71.     vector < vector < pair<int, int> > > g(n);
  72.    
  73.     int m; cin >> m;
  74.     for (int i = 0; i < m; ++i)
  75.     {
  76.         int v, to, l;
  77.         cin >> v >> to >> l;
  78.         g[v].push_back(make_pair(to, l));
  79.     }
  80.     int s = 6;
  81.     vector<int> d(n, INF), p(n);
  82.     d[s] = 0;
  83.     vector<char> u(n);
  84.     for (int i = 0; i < n; ++i) {
  85.         int v = -1;
  86.         for (int j = 0; j < n; ++j)
  87.             if (!u[j] && (v == -1 || d[j] < d[v]))
  88.                 v = j;
  89.         if (d[v] == INF)
  90.             break;
  91.         u[v] = true;
  92.  
  93.         for (size_t j = 0; j < g[v].size(); ++j) {
  94.             int to = g[v][j].first,
  95.                 len = g[v][j].second;
  96.             if (d[v] + len < d[to]) {
  97.                 d[to] = d[v] + len;
  98.                 p[to] = v;
  99.             }
  100.         }
  101.     }
  102.  
  103.     for (int i = 0; i < n; ++i)
  104.         cout << i << " ---> " << d[i] << "\n";
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement