제출 #1063056

#제출 시각아이디문제언어결과실행 시간메모리
1063056_8_8_Olympic Bus (JOI20_ho_t4)C++17
0 / 100
118 ms7992 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e5 + 12, MOD = (int)1e9 + 7; const ll inf = 1e16; int n,m; int U[N],V[N],C[N],D[N]; void dijkstra(int ver,vector<ll> &d,vector<int> &pr) { d.resize(n); pr.resize(n); for(int i = 0;i < n;i++) { d[i] = inf; } d[ver] = 0; vector<int> vis(n,0); vector<vector<int>> g;g.resize(n); for(int i = 0;i < m;++i) { g[U[i]].push_back(i); } for(int i = 0;i < n;i++) { int v = -1; for(int j = 0;j < n;j++) { if(vis[j]) continue; if(v == -1 || d[j] < d[v]) { v = j; } } // cerr << v << '\n'; vis[v] = 1; for(int t:g[v]) { int to = V[t],w = C[t]; if(d[to] > d[v] + w) { d[to] = d[v] + w; pr[to] = t; } } } } vector<ll> d[N]; vector<int> p[N]; ll res = inf; bool in[N]; void test() { cin >> n >> m; for(int i = 0;i < m;i++) { cin >> U[i] >> V[i] >> C[i] >> D[i]; U[i]--;V[i]--; } for(int i = 0;i < n;++i) { dijkstra(i,d[i],p[i]); } res = d[0][n-1] + d[n - 1][0]; vector<ll> bfd; vector<int> bfp; auto make = [&](int x,int y,vector<int> &pr){ while(x != y) { int j = pr[x]; in[j] = 1; swap(V[j],U[j]); ll nv = D[j]; // cout << j << ' '; dijkstra(0,bfd,bfp); nv += bfd[n - 1]; dijkstra(n - 1,bfd,bfp); nv += bfd[0]; res = min(res,nv); swap(V[j],U[j]); x = U[j]; } }; if(d[0][n - 1] != inf) make(n - 1,0,p[0]); if(d[n - 1][0] != inf) make(0,n - 1,p[n - 1]); for(int i = 0;i < m;i++) { if(in[i]) continue; swap(U[i],V[i]); ll val = min(d[0][n - 1],d[0][U[i]] + d[V[i]][n - 1] + C[i] + D[i]); val += min(d[n - 1][0],d[n - 1][U[i]] + d[V[i]][0] + C[i] + D[i]); res = min(res,val); } if(res > inf) res = -1; cout << res << '\n'; } int main() { ios_base::sync_with_stdio(false);cin.tie(0); int t = 1; // cin >> t; while(t--) { test(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...