fork download
  1. #include<bits/stdc++.h>
  2.  
  3. #define fastio ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  4. #define ll long long
  5. #define pii pair<int,int>
  6. #define pill pair<int,ll>
  7. #define pll pair<ll,ll>
  8. #define pb push_back
  9. #define fi first
  10. #define se second
  11. #define ff fi.fi
  12. #define fs fi.se
  13. #define sf se.fi
  14. #define ss se.se
  15. #define MASK(x) (((1)<<(x))-1)
  16. #define getbit(x,k) (((x)>>(k))&1)
  17.  
  18. using namespace std;
  19.  
  20. const int maxn=1e5+50,mod=1e9+7;
  21. const ll inf=0x3f3f3f3f3f3f3f3f;
  22.  
  23. int n,m;
  24. ll d[maxn];
  25. vector<pii>eg[maxn];
  26. void dijkstra()
  27. {
  28. priority_queue<pll,vector<pll>,greater<pll>>pQ;
  29. for(int i=1;i<=n;i++) pQ.push({d[i],i});
  30. while(pQ.size())
  31. {
  32. pll u=pQ.top();pQ.pop();
  33. if(u.fi!=d[u.se]) continue;
  34. for(pii v:eg[u.se])
  35. if(u.fi+v.se<d[v.fi])
  36. {
  37. d[v.fi]=u.fi+v.se;
  38. pQ.push({d[v.fi],v.fi});
  39. }
  40. }
  41. }
  42. int main()
  43. {
  44. cin>>n>>m;
  45. for(int i=1;i<=n;i++) cin>>d[i];
  46. for(int i=1;i<=m;i++)
  47. {
  48. int u,v,c;cin>>u>>v>>c;
  49. eg[u].pb({v,c+c});eg[v].pb({u,c+c});
  50. }
  51. dijkstra();
  52. for(int i=1;i<=n;i++) cout<<d[i]<<' ';
  53. }
  54.  
Success #stdin #stdout 0.01s 6332KB
stdin
Standard input is empty
stdout
Standard output is empty