Advertisement
Alex-Flexer

Untitled

Nov 14th, 2023
8
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <string>
  4. #include <queue>
  5. #include <map>
  6. #include <vector>
  7. #include <set>
  8. #include <cmath>
  9. #include <iomanip>
  10. #include <algorithm>
  11. //#include <priority_queue>
  12. #include <stack>
  13.  
  14. using namespace std;
  15. typedef long long ll;
  16. typedef double db;
  17.  
  18.  
  19. struct Node
  20. {
  21. vector<pair<ll, ll>> to;
  22. ll val;
  23. };
  24.  
  25. int n, m;
  26. vector<Node> v;
  27.  
  28. ll bfs(pair<ll, ll> start)
  29. {
  30. priority_queue<pair<ll, ll>> q;
  31. q.push(start);
  32. ll mx = start.first;
  33. while (!q.empty())
  34. {
  35. pair<ll, ll> n = q.top();
  36. q.pop();
  37. for (auto c : v[n.second].to)
  38. {
  39. mx = max(mx, n.first + c.first);
  40. q.push(make_pair(n.first + c.first, c.second));
  41. }
  42. }
  43. return mx;
  44. }
  45.  
  46. int main()
  47. {
  48. cin >> n >> m;
  49. v.resize(n);
  50. for (int i = 0; i < n; i++)
  51. {
  52. cin >> v[i].val;
  53. }
  54. for (int i = 0; i < m; i++)
  55. {
  56. ll a, b;
  57. cin >> a >> b;
  58. a--; b--;
  59. v[a].to.push_back(make_pair(v[b].val, b));
  60. }
  61. ll mx = -1;
  62. for (ll i = 0; i < n; i++)
  63. {
  64. mx = max(mx, bfs(make_pair(v[i].val, i)));
  65. }
  66. cout << mx;
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement