Advertisement
Guest User

Untitled

a guest
Feb 28th, 2020
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. #define INF 1e9
  3.  
  4. using namespace std;
  5.  
  6. const long long NMAX = 1e5;
  7.  
  8. vector <long long> d(NMAX , INF) , d1(NMAX , INF);
  9. vector <vector <pair <long long , long long> > > g(NMAX);
  10. priority_queue<pair <long long , long long>> q , q1;
  11. int main() {
  12. freopen ("INPUT.TXT" , "r" , stdin);
  13. freopen ("OUTPUT.TXT" , "w" , stdout);
  14. long long n , m , k;
  15. cin >> n >> m >> k;
  16. long long A , B;
  17. cin >> A >> B;
  18. long long v[k + 1] , c[k + 1];
  19. for (long long i = 1; i <= k; i++) {
  20. cin >> v[i] >> c[i];
  21. }
  22. for (long long i = 1; i <= m; i++) {
  23. long long x , y , w;
  24. cin >> x >> y >> w;
  25. g[x].push_back({y , w});
  26. g[y].push_back({x , w});
  27. }
  28. long long s = A;
  29. q.push({0 , s});
  30. d[s] = 0;
  31. while (!q.empty()) {
  32. long long it = q.top().second , mn = -q.top().first;
  33. q.pop();
  34. if (mn > d[it]) continue;
  35. for (long long j = 0; j < g[it].size(); j++) {
  36. long long to = g[it][j].first;
  37. long long len = g[it][j].second;
  38. if (d[it] + len < d[to]) {
  39. d[to] = d[it] + len;
  40. q.push({-d[to] , to});
  41. }
  42. }
  43. }
  44. s = B;
  45. q1.push({0 , s});
  46. d1[s] = 0;
  47. while (!q1.empty()) {
  48. long long it = q1.top().second , mn = -q1.top().first;
  49. q1.pop();
  50. if (mn > d1[it]) continue;
  51. for (long long j = 0; j < g[it].size(); j++) {
  52. long long to = g[it][j].first;
  53. long long len = g[it][j].second;
  54. if (d1[it] + len < d1[to]) {
  55. d1[to] = d1[it] + len;
  56. q1.push({-d1[to] , to});
  57. }
  58. }
  59. }
  60. long long mn = 1e18;
  61. for (long long i = 1; i <= k; i++) {
  62. mn = min(d[v[i]] + d1[v[i]] + c[i] , mn);
  63. }
  64. cout << mn;
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement