Submission #411827

#TimeUsernameProblemLanguageResultExecution timeMemory
411827jeqchoCrocodile's Underground City (IOI11_crocodile)C++17
89 / 100
2008 ms40376 KiB
#include "crocodile.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> pii; typedef vector<int> vi; typedef vector<pair<int,int>> vpi; #define FOR(i,a,b) for (int i = (a); i < (b); ++i) #define F0R(i,a) FOR(i,0,a) #define ROF(i,a,b) for (int i = (b)-1; i >= (a); --i) #define R0F(i,a) ROF(i,0,a) #define trav(a,x) for (auto& a: x) #define pb push_back #define rsz resize #define sz(x) int(x.size()) #define all(x) begin(x), end(x) #define fi first #define se second int const n=1e5+3; bitset<n> colored; vpi adj[n]; int to[n]; pair<int,pii>cnt[n]; int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { F0R(i,N) { cnt[i].fi=0; cnt[i].se.fi=2e9; cnt[i].se.se=2e9; } vi nw; F0R(i,K) { colored[P[i]]=1; to[P[i]]=0; nw.pb(P[i]); } F0R(i,M) { int u=R[i][0]; int v=R[i][1]; adj[u].pb({v,L[i]}); adj[v].pb({u,L[i]}); } while(!colored[0]) { trav(e,nw) { trav(chi,adj[e]) { if(colored[chi.fi])continue; ++cnt[chi.fi].fi; int cand = to[e]+chi.se; if(cand < cnt[chi.fi].se.fi) { cnt[chi.fi].se.se = cnt[chi.fi].se.fi; cnt[chi.fi].se.fi = cand; } else { cnt[chi.fi].se.se = min(cnt[chi.fi].se.se,cand); } } } nw.clear(); int rec = 1e9; F0R(i,N) { if(colored[i])continue; if(cnt[i].fi>=2) { if(cnt[i].se.se<=rec) { if(cnt[i].se.se<rec) { nw.clear(); } rec=cnt[i].se.se; nw.pb(i); } } } trav(e,nw) { to[e]=rec; colored[e]=1; } } return (int)to[0]; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...