Advertisement
Guest User

Untitled

a guest
May 25th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. #pragma comment(linker, "/STACK:189721600")
  2. #include <iostream>
  3. #include <fstream>
  4. #include <set>
  5. #include<iterator>
  6. #include<vector>
  7. #include <functional>
  8. #include<queue>
  9.  
  10. using namespace std;
  11. int main() {
  12. ifstream fin("input.txt");
  13. int n, m;
  14. fin >> n;
  15. fin >> m;
  16. ofstream fout("output.txt");
  17. pair<int, int> p;
  18. int x;
  19. vector<long long> d(n + 1, ULONG_MAX);
  20. struct Node
  21. {
  22. int v;
  23. long long len;
  24. Node(int v, long long len)
  25. {
  26. this->v = v;
  27. this->len = len;
  28.  
  29. }
  30. bool operator >(const Node &n) const
  31. {
  32. return len > n.len;
  33. }
  34. };
  35. int y, h;
  36. vector<pair<int, int>> vct[200002];
  37. priority_queue<Node, vector<Node>, greater<Node> > q;
  38. for (int i = 0; i < m; i++) {
  39. fin >>x>> y >> h;
  40. vct[x].push_back(make_pair(y, h));
  41. vct[y].push_back(make_pair(x, h));
  42. }
  43. int flags[200001];
  44. d[1] = 0;
  45. q.push(Node(1, 0));
  46. for (int i = 1; i < n+1; i++)
  47. {
  48. flags[i] = false;
  49. }
  50. while (!q.empty())
  51. {
  52. Node node = q.top();
  53. q.pop();
  54. if (!flags[node.v])
  55. {
  56. flags[node.v] = true;
  57. for (auto j : vct[node.v])
  58. {
  59. if (node.len != ULONG_MAX &!flags[j.first] && node.len + j.second < d[j.first])
  60. {
  61. d[j.first] = node.len + j.second;
  62. q.push(Node(j.first, d[j.first]));
  63. }
  64. }
  65. }
  66. }
  67. fout << d[n];
  68. fout.close();}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement