Submission #522318

#TimeUsernameProblemLanguageResultExecution timeMemory
522318new_accCrocodile's Underground City (IOI11_crocodile)C++14
46 / 100
3 ms3020 KiB
#include<bits/stdc++.h> #define fi first #define se second #define rep(a, b) for(int a = 0; a < (int)(b); a++) using namespace std; typedef long long ll; typedef vector<int> vi; typedef vector<ll> vl; const int N=1e5+10; vector<pair<int,ll> > graf[N]; bool vis[N],wyb[N]; ll dp[N]; void dfs(int v){ vis[v]=1; vector<pair<int,ll> >curr; for(auto u:graf[v]){ if(vis[u.fi]) continue; curr.push_back({u.fi,u.se}); dfs(u.fi); } ll naj1=LLONG_MAX,naj2=LLONG_MAX; for(auto u:curr){ if(dp[u.fi]+u.se<=naj1){ naj2=min(naj2,naj1); naj1=dp[u.fi]+u.se; }else naj2=min(naj2,dp[u.fi]+u.se); } dp[v]=naj2; if(wyb[v]) dp[v]=0; } ll travel_plan(int n,int m,int r[][2],int l[],int k,int p[]){ rep(i,m) graf[r[i][0]].push_back({r[i][1],l[i]}),graf[r[i][1]].push_back({r[i][0],l[i]}); rep(i,k) wyb[p[i]]=1; dfs(0); return dp[0]; } /*int main(){ int r[7][2]; r[0][0]=0,r[0][1]=2; r[1][0]=0,r[1][1]=3; r[2][0]=3,r[2][1]=2; r[3][0]=2,r[3][1]=1; r[4][0]=0,r[4][1]=1; r[5][0]=0,r[5][1]=4; r[6][0]=3,r[6][1]=4; int l[7]; l[0]=4,l[1]=3,l[2]=2,l[3]=10,l[4]=100,l[5]=7,l[6]=9; int p[2]; p[0]=1,p[1]=3; cout<<travel_plan(5,6,r,l,2,p)<<"\n"; }*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...