Advertisement
Guest User

Untitled

a guest
May 22nd, 2019
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.34 KB | None | 0 0
  1. #include <fstream>
  2. #include <queue>
  3. #pragma warning(disable: 4996)
  4.  
  5. using namespace std;
  6.  
  7. typedef pair<uint32_t, uint32_t> edge;
  8.  
  9. int main() {
  10.     freopen("input.txt", "r", stdin);
  11.     freopen("output.txt", "w", stdout);
  12.     uint32_t n;
  13.     uint32_t m;
  14.     scanf("%d %d", &n, &m);
  15.     vector<vector<edge>> adj(n + 1);
  16.     uint32_t u;
  17.     uint32_t v;
  18.     uint32_t w;
  19.     uint32_t j;
  20.     bool found;
  21.     for (uint32_t i = 0; i < m; ++i) {
  22.         scanf("%d %d %d", &u, &v, &w);
  23.         found = false;
  24.         if (u != v) {
  25.             /*for (j = 0; j < adj[u].size(); ++j) {
  26.                 if (adj[u][j].first == v) { found = true; break; }
  27.             }
  28.             if (found && adj[u][j].second > w) { adj[u][j].second = w; }
  29.             else { adj[u].push_back(edge(v, w)); }*/
  30.             adj[u].push_back(edge(v, w));
  31.         }
  32.     }
  33.     vector<uint64_t> paths(n + 1, INT_MAX);
  34.     vector<bool> visited(n + 1);
  35.     auto comp = [&paths](uint32_t a, uint32_t b) { return paths[b] < paths[a]; };
  36.     priority_queue<uint32_t, vector<uint32_t>, decltype(comp)> q(comp, vector<uint32_t>(0));
  37.     size_t size;
  38.     q.push(1);
  39.     paths[1] = 0;
  40.     while (!q.empty()) {
  41.         u = q.top();
  42.         q.pop();
  43.         if (!visited[u]) {
  44.             visited[u] = true;
  45.             size = adj[u].size();
  46.             for (size_t i = 0; i < size; ++i) {
  47.                 paths[adj[u][i].first] = min(paths[u] + adj[u][i].second, paths[adj[u][i].first]);
  48.                 q.push(adj[u][i].first);
  49.             }
  50.         }
  51.     }
  52.     printf("%lld\n", paths[n]);
  53.     return 0;
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement