제출 #833449

#제출 시각아이디문제언어결과실행 시간메모리
833449vjudge1Commuter Pass (JOI18_commuter_pass)C++17
15 / 100
310 ms32412 KiB
#include <bits/stdc++.h> #define ll long long #define fi first #define se second #define pb push_back #define pll pair<ll, ll> #define tll tuple<ll, ll, ll> #define g0 get<0> #define g1 get<1> #define g2 get<2> using namespace std; const ll INF=1e15; const ll MX=200010; //C ll n, m, s, t, u, v, a[MX], b[MX], c[MX], dist[MX], pred[MX], ans; vector<tll> adj[MX]; vector<ll> gbs[100002]; bool vis[MX]; void dijkstra1(){ priority_queue<pll, vector<pll>, greater<pll>> pq; for(ll i=1; i<=n; i++){ if(i==s) dist[i]=0; else dist[i]=INF; vis[i]=0; } pq.push({0, s}); while(!pq.empty()){ ll cn=g1(pq.top()); ll cd=g0(pq.top()); // vis[cn]=1; pq.pop(); for(auto i : adj[cn]){ ll w=g0(i), nxt=g1(i), idx=g2(i); // if(vis[nxt]) continue; if(cd+w>=dist[nxt]) continue; dist[nxt]=cd+w; pred[nxt]=cn; // vis[nxt]=1; pq.push({dist[nxt], nxt}); } } } void dijkstra2(){ priority_queue<pll, vector<pll>, greater<pll>> pq; for(ll i=1; i<=n; i++){ if(i==u) dist[i]=0; else dist[i]=INF; vis[i]=0; } pq.push({0, u}); while(!pq.empty()){ ll cn=g1(pq.top()); ll cd=g0(pq.top()); pq.pop(); // cout << "adj " << cn << endl; for(auto i : adj[cn]){ ll w=0, nxt=g1(i), idx=g2(i); if(find(gbs[cn].begin(), gbs[cn].end(), nxt)!=gbs[cn].end()){ w=0; } else w=c[idx]; // cout << cn << " " << nxt << " " << w << endl; if(cd+w>=dist[nxt]) continue; dist[nxt]=cd+w; pq.push({dist[nxt], nxt}); } } } int main(){ cin >> n >> m >> s >> t >> u >> v; for(ll i=1; i<=m; i++){ cin >> a[i] >> b[i] >> c[i]; adj[a[i]].pb({c[i], b[i], i}); adj[b[i]].pb({c[i], a[i], i}); } //shortest path 1 -> dari s ke t dijkstra1(); ll cur=t, prev; while(cur!=s){ // cout << cur << endl; prev=pred[cur]; gbs[prev].pb(cur); gbs[cur].pb(prev); cur=prev; } //shortest path 2 -> dari u ke v dijkstra2(); cout << dist[v] << endl; return 0; }

컴파일 시 표준 에러 (stderr) 메시지

commuter_pass.cpp: In function 'void dijkstra1()':
commuter_pass.cpp:35:27: warning: unused variable 'idx' [-Wunused-variable]
   35 |    ll w=g0(i), nxt=g1(i), idx=g2(i);
      |                           ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...