Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define int long long
  3.  
  4. using namespace std;
  5.  
  6. vector <pair<int, int> g[300];
  7.  
  8. int dist[300];
  9. int p[300];
  10.  
  11. signed main() {
  12. ios_base::sync_with_stdio(0);
  13. cin.tie(0); cout.tie(0);
  14. int n, m;
  15. cin >> n >> m;
  16. for (int i = 0; i < m; i++) {
  17. int x, y, v;
  18. cin >> x >> y >> v;
  19. g[x - 1].push_back({y - 1, v});
  20. g[y - 1].push_back({x - 1, v});
  21. }
  22. set <pair <int, int>> s;
  23. dist[0] = 0;
  24. p[0] = -1;
  25. s.insert({0, 0});
  26. while (s.size() > 0) {
  27. int v = s.begin() -> second;
  28. s.erase(s.begin());
  29. for (auto u : g[v]) {
  30. if (dist[u.first] > dist[v] + u.second) {
  31. s.erase({u.first, dist[u.first]});
  32. dist[u.first] = dist[v] + u.second;
  33. p[u.first] = v;
  34. s.insert({u.first, dist[u.first]});
  35. }
  36. }
  37. }
  38. int ans = dist[n - 1];
  39. int k = n - 1;
  40. vector <int> put = {k};
  41. while (p[k] != -1) {
  42. put.push_back(p[k]);
  43. k = p[k];
  44. }
  45. int anr = 1e18;
  46. for (int i = 0; i < put.size() - 1; i++) {
  47. for (int j = 0; j < g[put[i]].size(); j++) {
  48. if (g[put[i]][j].first == put[i + 1]) {
  49. g[put[i]][j].second *= 2;
  50. }
  51. }
  52. for (int j = 0; j < g[put[i + 1]].size(); j++) {
  53. if (g[put[i + 1]][j].first == put[i]) {
  54. g[put[i + 1]][j].second *= 2;
  55. }
  56. }
  57.  
  58. }
  59. return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement