Submission #385309

#TimeUsernameProblemLanguageResultExecution timeMemory
385309Pichon5Crocodile's Underground City (IOI11_crocodile)C++17
100 / 100
624 ms44864 KiB
#include "crocodile.h" #include<bits/stdc++.h> #define lcm(a,b) (a/__gcd(a,b))*b #define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0); #define ll long long int #define vi vector<int> #define vll vector<ll> #define pb push_back #define F first #define S second using namespace std; vector<vector<pair<int,int> > >G; const int INF=2*1e9; int dp[1005]; void dfs(int nodo,int p){ vi v; for(auto it : G[nodo]){ if(it.F==p)continue; dfs(it.F,nodo); v.pb(dp[it.F]+it.S); } sort(v.begin(),v.end()); if(G[nodo].size()==1){ dp[nodo]=0; }else{ dp[nodo]=v[1]; } } int travel_plan(int N, int M, int R[][2], int L[], int K, int P[]) { //R[i][0] --- R[i][1] con peso L[i] G.assign(N+1,vector<pair<int,int> >()); int dis[N+1][2]; for(int i=0;i<=N;i++){ dis[i][0]=dis[i][1]=INF; } for(int i=0;i<M;i++){ int a=R[i][0],b=R[i][1],w=L[i]; G[a].pb({b,w}); G[b].pb({a,w}); } priority_queue<pair<int,int> >q; for(int i=0;i<K;i++){ dis[P[i]][0]=dis[P[i]][1]=0; q.push({0,P[i]}); } vector<bool>vis(N+1,false); while(!q.empty()){ int nodo=q.top().S; q.pop(); if(vis[nodo])continue; vis[nodo]=1; for(auto it : G[nodo]){ int D=dis[nodo][1]; if(D+it.S<dis[it.F][0]){ dis[it.F][1]=dis[it.F][0]; dis[it.F][0]=D+it.S; if(dis[it.F][1]!=INF){ q.push({-dis[it.F][1],it.F}); } }else{ if(D+it.S<dis[it.F][1]){ dis[it.F][1]=D+it.S; q.push({-dis[it.F][1],it.F}); } } } } return dis[0][1]; } /* 5 7 2 0 2 4 0 3 3 3 2 2 2 1 10 0 1 100 0 4 7 3 4 9 1 3 14 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...