Submission #543209

#TimeUsernameProblemLanguageResultExecution timeMemory
543209__VariattoCrocodile's Underground City (IOI11_crocodile)C++17
89 / 100
2052 ms201856 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; #define pb push_back #define fi first #define se second #define ll long long const ll MAX=1e6+10, MAXV=1e18; int n, m, k, ileSpe[MAX], odw[MAX]; ll odl[MAX]; bool spe[MAX]; vector<pair<int,int>>g[MAX]; priority_queue<pair<ll,int>>kol; multiset<ll>akt[MAX]; ll obl(int x){ auto it=akt[x].begin(); it++; return(*it); } int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]){ n=N, k=K, m=M; for(int i=1; i<=m; i++) g[R[i-1][0]+1].pb({R[i-1][1]+1, L[i-1]}), g[R[i-1][1]+1].pb({R[i-1][0]+1, L[i-1]}); for(int i=1; i<=k; i++){ int v=P[i-1]+1; spe[v]=true; } for(int i=1; i<=n; i++){ odl[i]=MAXV; if(spe[i]) kol.push({0, i}), odl[i]=0; } while(kol.size()){ auto v=kol.top().se; kol.pop(); if(odw[v]) continue; odw[v]=spe[v]=true; for(auto s: g[v]){ ileSpe[s.fi]++; akt[s.fi].insert(odl[v]+s.se); if(ileSpe[s.fi]>=2){ ll nowy=obl(s.fi); if(odl[s.fi]>nowy) odl[s.fi]=nowy, kol.push({-nowy, s.fi}); } } } return odl[1]; } /*int main(){ ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0); int N, M, K; cin>>N>>M; cin>>K; int R[M+3][2], L[M+3]; for(int i=0; i<M; i++) cin>>R[i][0]>>R[i][1]>>L[i]; int P[K+3]; for(int i=1; i<=K; i++) cin>>P[i-1]; cout<<travel_plan(N, M, R, L, K, P)<<"\n";; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...