Submission #525370

#TimeUsernameProblemLanguageResultExecution timeMemory
525370LoboRobot (JOI21_ho_t4)C++17
0 / 100
128 ms33836 KiB
#include<bits/stdc++.h> using namespace std; const long long inf = (long long) 1e18 + 10; const int inf1 = (int) 1e9 + 10; #define int long long #define dbl long double #define endl '\n' #define sc second #define fr first #define mp make_pair #define pb push_back #define all(x) x.begin(), x.end() #define maxn 220000 int n, m, fq[maxn], d[maxn]; vector<pair<int,pair<int,int>>> edg[maxn]; vector<pair<int,int>> g[maxn]; void shp() { for(int i = 2; i <= n; i++) { d[i] = inf; } d[1] = 0; priority_queue<pair<int,int>> pq; pq.push(mp(0,1)); while(pq.size()) { int u = pq.top().sc; int dist = -pq.top().fr; pq.pop(); if(dist != d[u]) continue; for(auto V : g[u]) { int v = V.fr; int w = V.sc; if(d[v] > d[u] + w) { d[v] = d[u] + w; pq.push(mp(-d[v],v)); } } } } void solve() { cin >> n >> m; for(int i = 0; i < m; i++) { int u, v, col, val; cin >> u >> v >> col >> val; edg[u].pb(mp(v,mp(col,val))); edg[v].pb(mp(u,mp(col,val))); } for(int i = 1; i <= n; i++) { for(auto V : edg[i]) { fq[V.sc.fr]+= V.sc.sc; } for(auto V : edg[i]) { int v = V.fr; int col = V.sc.fr; int val = V.sc.sc; // cout << col << " " << val << endl; g[i].pb(mp(v,min(fq[col]-val,val))); // if(fq[col] == 1) g[i].pb(mp(v,0)); // else g[i].pb(mp(v,val)); } for(auto V : edg[i]) { fq[V.sc.fr]-= V.sc.sc; } } shp(); if(d[n] == inf) cout << -1 << endl; else cout << d[n] << endl; } int32_t main() { ios::sync_with_stdio(false); cin.tie(0); // freopen("in.in", "r", stdin); //freopen("out.out", "w", stdout); int tt = 1; // cin >> tt; while(tt--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...