Submission #917976

#TimeUsernameProblemLanguageResultExecution timeMemory
917976imarnRobot (JOI21_ho_t4)C++14
0 / 100
68 ms9996 KiB
#include<bits/stdc++.h> #define ll long long #define pii pair<int,int> #define pll pair<ll,ll> #define f first #define s second #define pb push_back #define all(x) x.begin(),x.end() #define vi vector<int> #define vvi vector<vi> #define vp vector<pii> using namespace std; const int N=1e5+5; vector<pair<ll,pll>>g[N]; ll d[N]; ll sum[N]{0}; bool vis[N]{0}; int main(){ int n,m;cin>>n>>m; while(m--){ int a,b,c,d;cin>>a>>b>>c>>d; g[a].pb({c,{b,d}}); g[b].pb({c,{b,d}}); }d[1]=0;for(int i=2;i<=n;i++)d[i]=1e18; priority_queue<pll,vector<pll>,greater<pll>>q; q.push({d[1],1}); while(!q.empty()){ pll u=q.top();q.pop(); if(vis[u.s])continue; vis[u.s]=1; for(auto it : g[u.s])sum[it.f]+=it.s.s; for(auto it : g[u.s]){ if(sum[it.f]-it.s.s==0){ if(d[it.s.f]>u.f)d[it.s.f]=u.f,q.push({d[it.s.f],it.s.f}); } if(d[it.s.f]>u.f+min(sum[it.f]-it.s.s,it.s.s)){ d[it.s.f]=u.f+min(sum[it.f]-it.s.s,it.s.s);q.push({d[it.s.f],it.s.f}); } }for(auto it : g[u.s])sum[it.f]=0; }cout<<(vis[n]?d[n]:-1); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...