제출 #729393

#제출 시각아이디문제언어결과실행 시간메모리
729393penguin133Commuter Pass (JOI18_commuter_pass)C++17
31 / 100
319 ms19092 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pi pair<int, int> #define pii pair<int, pi> #define fi first #define se second #ifdef _WIN32 #define getchar_unlocked _getchar_nolock #endif mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); int n, m, s, t, u, v; int dist[300005], dist2[300005], dist3[300005]; vector <pi> adj[100005]; void dijk(int d[], int st){ priority_queue <pi, vector<pi>, greater<pi> > pq; for(int i=1;i<=n;i++)d[i] = 1e18; d[st] = 0; pq.push({0, st}); while(!pq.empty()){ int x = pq.top().fi, y = pq.top().se; pq.pop(); if(d[y] < x)continue; for(auto [i, j] : adj[y]){ if(d[i] > x + j)d[i] = x + j, pq.push({d[i], i}); } } } void solve(){ cin >> n >> m >> s >> t >> u >> v; while(m--){ int a, b, c; cin >> a >> b >> c; adj[a].push_back({b, c}); adj[b].push_back({a, c}); } dijk(dist, s); dijk(dist2, t); priority_queue <pi, vector <pi>, greater<pi> > pq; if(s != u)swap(u, v); pq.push({0, u}); for(int i=1;i<=n;i++)dist3[i] = 1e18; dist3[u] = 0; while(!pq.empty()){ int x = pq.top().fi, y = pq.top().se; pq.pop(); if(dist3[y] < x)continue; for(auto [i, j] : adj[y]){ int cst = j; if(dist[i] + j + dist2[y] == dist[t] || dist[y] + j + dist2[i] == dist[t])cst = 0; if(dist3[i] > x + cst)dist3[i] = x + cst, pq.push({dist3[i], i}); } } cout << dist3[v]; } main(){ ios::sync_with_stdio(0);cin.tie(0); int tc = 1; //cin >> tc; for(int tc1=1;tc1<=tc;tc1++){ // cout << "Case #" << tc1 << ": "; solve(); } }

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

commuter_pass.cpp:61:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   61 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...