# include <bits/stdc++.h>
using namespace std;
#define f first
#define s second
#define int long long
#define pii pair <int, int>
#define pb push_back
const int N = 3e5 + 5, inf = 1e12;
int t,n,a[N], dp[N], dep[N],lv[N],tin,in[N],out[N], fix[N],m,q,rt,ed_a[N],ed_b[N];
vector <pii> v[N];
pii par[N][20];
void dfs(int a, int p) {
if (!fix[a]) dp[a] = inf;
else dp[a] = -lv[a];
dep[a] = dep[p] + 1;
tin++;
in[a] = tin;
for (pii sth : v[a]) {
int to = sth.f; int c = sth.s;
if (to == p) continue;
lv[to] = lv[a] + c;
dfs(to, a);
if (dp[to] != inf)
dp[a] = min(dp[a], dp[to] + 2 * (lv[to] - lv[a]));
}
out[a] = tin;
}
void dfs1(int a, int p) {
par[a][0] = {p, dp[a]};
for (int i = 1; i <= 18; i++) {
if (par[a][i - 1].f) {
par[a][i].f = par[par[a][i - 1].f][i - 1].f;
par[a][i].s = min(par[a][i - 1].s, par[par[a][i - 1].f][i - 1].s);
}
}
for (pii sth : v[a]) {
int to = sth.f; int c = sth.s;
if (to == p) continue;
dfs1(to, a);
}
}
int upper(int a, int b) {
return (in[a] <= in[b] && out[a] >= out[b]);
}
main() {
std::ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n>>m>>q>>rt;
for (int i = 1; i <= n - 1; i++) {
int a, b, c; cin>>a>>b>>c;
ed_a[i] = a; ed_b[i] = b;
v[a].pb({b, c});
v[b].pb({a, c});
}
for (int i = 1; i <= m; i++) {
int a; cin>>a;
fix[a] = 1;
}
dfs(rt, 0);
dfs1(rt, 0);
for (int i = 1; i <= q; i++) {
int idx, vert, a, b;
cin>>idx>>vert;
a = ed_a[idx]; b = ed_b[idx];
if (lv[a] < lv[b]) swap(a, b);
if(!upper(a, vert)) {
cout<<"escaped\n"; continue;
}
int dif = dep[vert] - dep[a] + 1;
int ans = inf, cur = vert;
for (int i = 0; i <= 18; i++) {
if ((1<<i)&dif) {
ans = min(ans, par[cur][i].s);
cur = par[cur][i].f;
}
}
if (ans == inf) cout<<"oo\n";
else cout<<ans + lv[vert]<<"\n";
}
}
Compilation message
valley.cpp: In function 'void dfs1(long long int, long long int)':
valley.cpp:40:29: warning: unused variable 'c' [-Wunused-variable]
40 | int to = sth.f; int c = sth.s;
| ^
valley.cpp: At global scope:
valley.cpp:48:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
48 | main() {
| ^~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
8 ms |
7568 KB |
Output is correct |
2 |
Correct |
7 ms |
7532 KB |
Output is correct |
3 |
Correct |
9 ms |
7636 KB |
Output is correct |
4 |
Correct |
6 ms |
7608 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
8 ms |
7568 KB |
Output is correct |
2 |
Correct |
7 ms |
7532 KB |
Output is correct |
3 |
Correct |
9 ms |
7636 KB |
Output is correct |
4 |
Correct |
6 ms |
7608 KB |
Output is correct |
5 |
Correct |
6 ms |
7908 KB |
Output is correct |
6 |
Correct |
6 ms |
7904 KB |
Output is correct |
7 |
Correct |
6 ms |
7892 KB |
Output is correct |
8 |
Correct |
6 ms |
7892 KB |
Output is correct |
9 |
Correct |
7 ms |
7892 KB |
Output is correct |
10 |
Correct |
7 ms |
7916 KB |
Output is correct |
11 |
Correct |
6 ms |
7908 KB |
Output is correct |
12 |
Correct |
6 ms |
7912 KB |
Output is correct |
13 |
Correct |
5 ms |
7916 KB |
Output is correct |
14 |
Correct |
7 ms |
7892 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
203 ms |
54608 KB |
Output is correct |
2 |
Correct |
201 ms |
54484 KB |
Output is correct |
3 |
Correct |
217 ms |
54604 KB |
Output is correct |
4 |
Correct |
243 ms |
56128 KB |
Output is correct |
5 |
Correct |
214 ms |
56296 KB |
Output is correct |
6 |
Correct |
271 ms |
57920 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
8 ms |
7568 KB |
Output is correct |
2 |
Correct |
7 ms |
7532 KB |
Output is correct |
3 |
Correct |
9 ms |
7636 KB |
Output is correct |
4 |
Correct |
6 ms |
7608 KB |
Output is correct |
5 |
Correct |
6 ms |
7908 KB |
Output is correct |
6 |
Correct |
6 ms |
7904 KB |
Output is correct |
7 |
Correct |
6 ms |
7892 KB |
Output is correct |
8 |
Correct |
6 ms |
7892 KB |
Output is correct |
9 |
Correct |
7 ms |
7892 KB |
Output is correct |
10 |
Correct |
7 ms |
7916 KB |
Output is correct |
11 |
Correct |
6 ms |
7908 KB |
Output is correct |
12 |
Correct |
6 ms |
7912 KB |
Output is correct |
13 |
Correct |
5 ms |
7916 KB |
Output is correct |
14 |
Correct |
7 ms |
7892 KB |
Output is correct |
15 |
Correct |
203 ms |
54608 KB |
Output is correct |
16 |
Correct |
201 ms |
54484 KB |
Output is correct |
17 |
Correct |
217 ms |
54604 KB |
Output is correct |
18 |
Correct |
243 ms |
56128 KB |
Output is correct |
19 |
Correct |
214 ms |
56296 KB |
Output is correct |
20 |
Correct |
271 ms |
57920 KB |
Output is correct |
21 |
Correct |
158 ms |
53308 KB |
Output is correct |
22 |
Correct |
148 ms |
53132 KB |
Output is correct |
23 |
Correct |
156 ms |
53320 KB |
Output is correct |
24 |
Correct |
209 ms |
55004 KB |
Output is correct |
25 |
Correct |
207 ms |
57492 KB |
Output is correct |
26 |
Correct |
137 ms |
53608 KB |
Output is correct |
27 |
Correct |
156 ms |
53356 KB |
Output is correct |
28 |
Correct |
168 ms |
53596 KB |
Output is correct |
29 |
Correct |
174 ms |
54868 KB |
Output is correct |
30 |
Correct |
214 ms |
56268 KB |
Output is correct |
31 |
Correct |
142 ms |
54144 KB |
Output is correct |
32 |
Correct |
142 ms |
53984 KB |
Output is correct |
33 |
Correct |
155 ms |
54312 KB |
Output is correct |
34 |
Correct |
218 ms |
55980 KB |
Output is correct |
35 |
Correct |
208 ms |
58132 KB |
Output is correct |
36 |
Correct |
195 ms |
55728 KB |
Output is correct |