Submission #768356

#TimeUsernameProblemLanguageResultExecution timeMemory
768356hgmhc날다람쥐 (JOI14_ho_t4)C++17
25 / 100
127 ms13800 KiB
#include <bits/stdc++.h> #define rep(i,a,b) for (auto i = (a); i <= (b); ++i) #define Mup(x,y) x = max(x,y) #define mup(x,y) x = min(x,y) #define all(x) begin(x),end(x) #define per(i,a,b) for (auto i = (b); i >= (a); --i) using namespace std; using ll = long long; using ii = pair<int,int>; #define dbg(...) fprintf(stderr,__VA_ARGS__) const ll INF = 1e18; const int N = 1e5+3; int n, m, x, h[N]; vector<ii> adj[N]; ll dist[N]; int main() { scanf("%d%d%d", &n, &m, &x); rep(i,1,n) scanf("%d", &h[i]); rep(i,1,m) { int u, v, t; scanf("%d%d%d", &u, &v, &t); adj[u].push_back({v,t}); adj[v].push_back({u,t}); } fill(dist,dist+N,INF); priority_queue<pair<ll,int>> pq; dist[1] = 0, pq.push({0,1}); while (not empty(pq)) { auto [d,a] = pq.top(); pq.pop(), d=-d; if (dist[a] < d) continue; for (auto [b,w] : adj[a]) if (h[a] >= w) { if (dist[a] < x) { if (x-dist[a] >= w) { dist[b] = max(dist[a]+w,0LL+x-h[b]); } else { dist[b] = dist[a]+w-(x-dist[a])+w; } pq.push({-dist[b],b}); } else if (dist[b] > dist[a]+2*w) { dist[b] = dist[a]+2*w; pq.push({-dist[b],b}); } } } if (dist[n] < x) printf("%lld", h[n]-(x-dist[n]) + dist[n]); else if (h[n]+dist[n] >= INF) puts("-1"); else printf("%lld", h[n]+dist[n]); }

Compilation message (stderr)

2014_ho_t4.cpp: In function 'int main()':
2014_ho_t4.cpp:19:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   19 |     scanf("%d%d%d", &n, &m, &x);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~
2014_ho_t4.cpp:20:21: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |     rep(i,1,n) scanf("%d", &h[i]);
      |                ~~~~~^~~~~~~~~~~~~
2014_ho_t4.cpp:23:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   23 |         scanf("%d%d%d", &u, &v, &t);
      |         ~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...