Advertisement
Mlxa

ALGO Short

Dec 25th, 2017
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.61 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <queue>
  4. using namespace std;
  5.  
  6. namespace Mlxa {
  7.     typedef long long ll;
  8.     const ll INF(1e17);
  9.     #define read cin
  10.     #define eol '\n'
  11.     #define endln cout << eol
  12.     #define print(a) cout << a << ' '
  13.  
  14.     template <class T> inline void
  15.     println (T t) { cout << t << eol; }
  16.     template <class A, class... B> inline void
  17.     println (A a, B... b) { print(a); println(b...); }
  18.  
  19.     #define size(a) ll(a.size())
  20.     #define all(a) begin(a), end(a)
  21.     #define pb push_back
  22.     #define mp make_pair
  23.     #define vec vector
  24. } using namespace Mlxa;
  25.  
  26. /* vertex from 1 to n!!! */
  27. vec <vec<ll> > Floyd (vec< vec<ll> > &C, ll n) {
  28.     vec< vec<ll> > p(n+1, vec<ll>(n+1, 0));
  29.     for (ll k(1); k <= n; ++ k)
  30.         for (ll i(1); i <= n; ++ i)
  31.             for (ll j(1); j <= n; ++ j)
  32.             if (C[i][k] < INF && C[k][j] < INF)
  33.             if (C[i][j] > C[i][k] + C[k][j])
  34.                 C[i][j] = C[i][k] + C[k][j],
  35.                 p[i][j] = k;
  36.     return p;
  37. }
  38.  
  39. vec<ll> dist;
  40. struct cmpp { bool operator () (ll i, ll j) { return dist[i] > dist[j]; } };
  41.  
  42. vec<ll> Dijkstra (ll start, const vec< vec<ll> > &C, ll n) {
  43.     dist.resize(n+1); fill(all(dist), +INF); dist[start] = 0;
  44.     vec<ll> p(n+1, 0);
  45.     vec<ll> emp;
  46.     priority_queue<ll, vector<ll>, cmpp> near;
  47.     near.push(start);
  48.     while (! near.empty() ) {
  49.         ll v = near.top(); near.pop();
  50.         for (ll u(1); u <= n; ++ u)
  51.         if (dist[u] > dist[v] + C[v][u])
  52.             dist[u] = dist[v] + C[v][u], p[u] = v;
  53.     }
  54.     return p;
  55. }
  56.  
  57. int main () {
  58.     return 0;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement