#include<bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define pb push_back
#define pi pair<int, int>
#define szz(s) int(s.size())
#define all(s) s.begin(), s.end()
#define FOR(i, a, b) for(int i = a; i <= b; ++i)
#define REP(i, a, b) for(int i = a; i >= b; --i)
const int N = 1e5 + 5, MOD = 1e9 + 7;
int n, s, q, E, TIME;
long long d[N], w[N], spe[N];
vector<pi> e[N];
void dfs(int u, int p, int i){
// cout << u << " " << d[u] << "\n";
for(auto [v, id] : e[u]){
if(v == p || id == i) continue;
// cout << u << " " << v << " " << id << "\n";
d[v] = d[u] + w[id];
dfs(v, u, i);
}
}
void solve(){
cin >> n >> s >> q >> E;
FOR(i, 1, n - 1){
int u, v; cin >> u >> v >> w[i];
e[u].pb({v, i});
e[v].pb({u, i});
}
FOR(i, 1, s){
cin >> spe[i];
}
FOR(id, 1, q){
int i, R; cin >> i >> R;
FOR(u, 1, n) d[u] = -1;
d[R] = 0;
dfs(R, 0, i);
if(d[E] != -1) cout << "escaped\n";
else{
long long res = 1e15;
FOR(i, 1, s){
if(d[spe[i]] == -1) continue;
res = min(res, d[spe[i]]);
}
if(res == 1e15) cout << "oo\n";
else cout << res << "\n";
}
}
}
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
solve();
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |