Submission #1135924

#TimeUsernameProblemLanguageResultExecution timeMemory
1135924t9unkubj악어의 지하 도시 (IOI11_crocodile)C++20
0 / 100
0 ms320 KiB
#ifdef t9unkubj #include"debug.cpp" //#include"template_no_debug.h" #else #define dbg(...) 199958 #endif #undef _GLIBCXX_DEBUG #pragma GCC optimize("O3") using namespace std; #include<bits/stdc++.h> using ll=long long; using ull=unsigned long long; template<class T>using vc=vector<T>; template<class T>using vvc=vc<vc<T>>; #define rep(i,n) for(ll i=0;i<(ll)(n);i++) #define REP(i,j,n) for(ll i=(j);i<(ll)(n);i++) #define DREP(i,n,m) for(ll i=(n);i>=(m);i--) #define drep(i,n) for(ll i=((n)-1);i>=0;i--) #define all(x) x.begin(),x.end() #define rall(x) x.rbegin(),x.rend() template<class T,class F> bool chmin(T &x, F y){ if(x>y){ x=y; return true; } return false; } template<class T, class F> bool chmax(T &x, F y){ if(x<y){ x=y; return true; } return false; } double pass_time=0; #include "crocodile.h" int solve(int n,int m,vc<int>u,vc<int>v,vc<int>l,int k,vc<int>p){ vvc<pair<int,int>>g(n); rep(i,m){ g[u[i]].push_back({v[i],l[i]}); g[v[i]].push_back({u[i],l[i]}); } dbg(g); vvc<ll>md(n,vc<ll>(2,2e18)); using S=array<ll,3>; priority_queue<S,vc<S>,greater<>>que; rep(i,k){ md[p[i]][0]=md[p[i]][1]=0; que.push({0,p[i],0}); } while(que.size()){ auto [p,q,t]=que.top();que.pop(); if(t){ if(md[q][0]>p){ md[q][1]=md[q][0]; md[q][0]=p; que.push({md[q][1],q,0}); }else if(md[q][1]>p){ md[q][1]=p; que.push({md[q][1],q,0}); } } if(md[q][1]!=p)continue; for(auto&[to,w]:g[q]){ que.push({md[q][1]+w,to,1}); } } ll ans=md[0][1]; assert(md[0][1]<=1e9); return ans; } int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { vc<int>u(M),v(M),l(M); rep(i,M){ u[i]=R[i][0]; v[i]=R[i][1]; l[i]=L[i]; } vc<int>p(K); rep(i,K)p[i]=P[i]; return solve(N,M,u,v,l,K,p); } /*int main(){ int n,m; cin>>n>>m; int r[m][2]; int l[m]; rep(i,m)rep(j,2)cin>>r[i][j]; rep(i,m)cin>>l[i]; int k; cin>>k; int p[k]; rep(i,k)cin>>p[i]; dbg(travel_plan(n,m,r,l,k,p)); } 5 4 0 1 0 2 3 2 2 4 2 3 1 4 3 1 3 4 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...