Submission #1104736

#TimeUsernameProblemLanguageResultExecution timeMemory
1104736goldencheemsValley (BOI19_valley)C++17
100 / 100
210 ms160328 KiB
#include <bits/stdc++.h> using namespace std; #define fi first #define se second #define pu push_back #define ll long long typedef pair <ll,ll> ii; const int N=1e6; long long mod=1e16; ll n,s,q,e,h,t; ll a[N+1],b[N+1],d[N+10],t_in[N+10],t_out[N+10],dist[N+10],dep[N+10]; ll tt[21][N+10],gt[21][N+10]; struct canh{ ll u,v,w; }; canh c[N+10]; vector <ii> adj[N+10]; bool o[N+10]; void dfs(int u,int p){ t++; t_in[u]=t; for(int i=1;i<=20;i++){ tt[i][u]=tt[i-1][tt[i-1][u]]; } d[u]=mod; if(o[u]) d[u]=dist[u]; for(auto x:adj[u]){ ll v=x.fi,w=x.se; if(v==p) continue; dist[v]=dist[u]+w; dep[v]=dep[u]+1; tt[0][v]=u; dfs(v,u); d[u]=min(d[u],d[v]); } t_out[u]=t; if(d[u]!=mod) gt[0][u]=d[u]-2*dist[u]; else gt[0][u]=mod; } bool totien(int u,int v){ if(t_in[u]<=t_in[v] and t_out[u]>=t_out[v]) return true; return false; } void tinh(){ cin>>n>>s>>q>>h; for(int i=1;i<n;i++){ ll u,v,w; cin>>u>>v>>w; adj[u].pu({v,w}); adj[v].pu({u,w}); c[i].u=u,c[i].v=v,c[i].w=w; } for(int i=1;i<=s;i++){ cin>>b[i]; o[b[i]]=true; } dep[h]=1; dfs(h,0); for(int i=1;i<n;i++){ if(t_in[c[i].v]<t_in[c[i].u]){ swap(c[i].u,c[i].v); } } for(int i=1;i<=20;i++){ for(int j=1;j<=n;j++){ gt[i][j]=min(gt[i-1][j],gt[i-1][tt[i-1][j]]) ; } } while(q--){ int i,u; cin>>i>>u; int v=c[i].v; if(!totien(v,u)){ cout<<"escaped\n"; continue; } ll res=gt[0][v]+dist[u],rem=dist[u]; for(int i=20;i>=0;i--){ if(dep[tt[i][u]]>=dep[v]){ res=min(res,rem+gt[i][u]); u=tt[i][u]; } } if(res<mod) cout<<res<<'\n'; else cout<<"oo\n"; } } int main(){ //freopen("jday.inp","r",stdin); //freopen("jday.out","w",stdout); ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); tinh(); return 0; } //code của anh Nam đẹp trai nhất CHL
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...