# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
903848 |
2024-01-11T12:22:58 Z |
PM1 |
Valley (BOI19_valley) |
C++17 |
|
372 ms |
54428 KB |
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fr first
#define sc second
const ll mxn=1e5+5;
ll n,s,q,e,st[mxn],fn[mxn],cnt=0,mark[mxn];
ll par[mxn][20],bl[mxn][20],dp[mxn],yal[mxn],ras[mxn],val[mxn];
vector<pair<ll,ll> >v[mxn];
void pre(ll z){
dp[z]=(mark[z])?0:1e15;
st[z]=++cnt;
for(ll i=1;i<20;i++){
par[z][i]=par[par[z][i-1]][i-1];
}
for(auto i:v[z]){
if(par[z][0]!=i.fr){
bl[i.fr][0]=yal[i.sc];
ras[i.sc]=i.fr;
par[i.fr][0]=z;
val[i.fr]=val[z]+yal[i.sc];
pre(i.fr);
dp[z]=min(dp[z],dp[i.fr]+yal[i.sc]);
}
}
bl[z][0]=dp[z]-val[z];
fn[z]=cnt;
}
void dfs(int z){
for(int i=1;i<20;i++){
bl[z][i]=min(bl[z][i-1],bl[par[z][i-1]][i-1]);
}
for(auto i:v[z]){
if(par[z][0]!=i.fr){
dfs(i.fr);
}
}
}
ll lca(ll x,ll y){
ll res=1e15;
for(ll i=19;i>=0;i--){
if(par[x][i]==0)
continue;
if(st[par[x][i]]>st[y] || fn[par[x][i]]<fn[y]){
res=min(res,bl[x][i]);
x=par[x][i];
}
}
//cout<<x<<" ";
if(x!=y)
return min(res,bl[x][1]);
return min(res,bl[x][0]);
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>s>>q>>e;
for(ll i=1;i<n;i++){
ll x,y,w;
cin>>x>>y>>yal[i];
v[x].push_back({y,i});
v[y].push_back({x,i});
}
for(ll i=1;i<=s;i++){
ll x;
cin>>x;
mark[x]=1;
}
pre(e);
dfs(e);
while(q--){
ll x,y;
cin>>x>>y;
swap(x,y);
y=ras[y];
//cout<<x<<" "<<y<<endl;
if(st[y]>st[x] || fn[y]<fn[x])
cout<<"escaped"<<'\n';
else{
if(dp[y]==1e15)
cout<<"oo"<<'\n';
else{
cout<<lca(x,y)+val[x]<<'\n';
}
}
}
return 0;
}
Compilation message
valley.cpp: In function 'int main()':
valley.cpp:59:10: warning: unused variable 'w' [-Wunused-variable]
59 | ll x,y,w;
| ^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
8796 KB |
Output is correct |
2 |
Correct |
14 ms |
8916 KB |
Output is correct |
3 |
Correct |
18 ms |
8796 KB |
Output is correct |
4 |
Correct |
14 ms |
8792 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
8796 KB |
Output is correct |
2 |
Correct |
14 ms |
8916 KB |
Output is correct |
3 |
Correct |
18 ms |
8796 KB |
Output is correct |
4 |
Correct |
14 ms |
8792 KB |
Output is correct |
5 |
Correct |
4 ms |
9052 KB |
Output is correct |
6 |
Correct |
3 ms |
9052 KB |
Output is correct |
7 |
Correct |
3 ms |
9052 KB |
Output is correct |
8 |
Correct |
3 ms |
9052 KB |
Output is correct |
9 |
Correct |
3 ms |
9052 KB |
Output is correct |
10 |
Correct |
3 ms |
8920 KB |
Output is correct |
11 |
Correct |
5 ms |
9052 KB |
Output is correct |
12 |
Correct |
5 ms |
9052 KB |
Output is correct |
13 |
Correct |
3 ms |
9052 KB |
Output is correct |
14 |
Correct |
4 ms |
9052 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
243 ms |
49128 KB |
Output is correct |
2 |
Correct |
256 ms |
48864 KB |
Output is correct |
3 |
Correct |
294 ms |
49156 KB |
Output is correct |
4 |
Correct |
298 ms |
51564 KB |
Output is correct |
5 |
Correct |
274 ms |
51548 KB |
Output is correct |
6 |
Correct |
322 ms |
54056 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
16 ms |
8796 KB |
Output is correct |
2 |
Correct |
14 ms |
8916 KB |
Output is correct |
3 |
Correct |
18 ms |
8796 KB |
Output is correct |
4 |
Correct |
14 ms |
8792 KB |
Output is correct |
5 |
Correct |
4 ms |
9052 KB |
Output is correct |
6 |
Correct |
3 ms |
9052 KB |
Output is correct |
7 |
Correct |
3 ms |
9052 KB |
Output is correct |
8 |
Correct |
3 ms |
9052 KB |
Output is correct |
9 |
Correct |
3 ms |
9052 KB |
Output is correct |
10 |
Correct |
3 ms |
8920 KB |
Output is correct |
11 |
Correct |
5 ms |
9052 KB |
Output is correct |
12 |
Correct |
5 ms |
9052 KB |
Output is correct |
13 |
Correct |
3 ms |
9052 KB |
Output is correct |
14 |
Correct |
4 ms |
9052 KB |
Output is correct |
15 |
Correct |
243 ms |
49128 KB |
Output is correct |
16 |
Correct |
256 ms |
48864 KB |
Output is correct |
17 |
Correct |
294 ms |
49156 KB |
Output is correct |
18 |
Correct |
298 ms |
51564 KB |
Output is correct |
19 |
Correct |
274 ms |
51548 KB |
Output is correct |
20 |
Correct |
322 ms |
54056 KB |
Output is correct |
21 |
Correct |
234 ms |
48208 KB |
Output is correct |
22 |
Correct |
243 ms |
47600 KB |
Output is correct |
23 |
Correct |
248 ms |
48064 KB |
Output is correct |
24 |
Correct |
271 ms |
50476 KB |
Output is correct |
25 |
Correct |
294 ms |
54360 KB |
Output is correct |
26 |
Correct |
235 ms |
48296 KB |
Output is correct |
27 |
Correct |
230 ms |
48204 KB |
Output is correct |
28 |
Correct |
263 ms |
48468 KB |
Output is correct |
29 |
Correct |
250 ms |
50004 KB |
Output is correct |
30 |
Correct |
326 ms |
52076 KB |
Output is correct |
31 |
Correct |
230 ms |
48724 KB |
Output is correct |
32 |
Correct |
266 ms |
48416 KB |
Output is correct |
33 |
Correct |
264 ms |
48864 KB |
Output is correct |
34 |
Correct |
292 ms |
50936 KB |
Output is correct |
35 |
Correct |
372 ms |
54428 KB |
Output is correct |
36 |
Correct |
272 ms |
51080 KB |
Output is correct |