//In the name of GOD***---...---***---...---***---...
/*/=======================================
Diversity in counsel, unity in command
__
Success always calls for greater generosity - though
most people, lost in the darkness of their own egos,
treat it as an occasion for greater greed.
Collecting boot is not an end itself, but only a means for
building an empire. Riches would be of little use to us now
except as a means of winning new friends.
__*By Cyrus the great*__
=======================================/*/
#include<bits/stdc++.h>
using namespace std;
////========== Defines ==============////
#define IOS ios_base::sync_with_stdio(0);\
cin.tie(0);\
cout.tie(0);
#define F first
#define S second
#define mp make_pair
#define pb push_back
#define lb lower_bound
#define ub upper_bound
#define all(x) x.begin(), x.end()
#define fixed(a) fixed<<setprecision(a)
////=============== Typedefs ==============////
typedef long long int lli;
typedef pair<int,int> pii;
////=============== CONSTANT ===============////
const lli mx = (1e3+100)*2, inf = (1<<30);
////============== Global types ============////
lli n, s, q, e;
vector<lli> adj[mx];
lli dis[mx], st[mx];
pii ed[mx];
lli wi[mx][mx];
lli mini =inf;
lli POS, ban1, ban2;
bool check;
////========== User Define Functions ==========////
void dfs(lli p, lli v){
dis[v] = dis[p] + wi[p][v];
if(v == e) mini = -1;
if(v == POS) check =1;
if(st[v] == 1) mini = min(mini, dis[v]);
for(auto u : adj[v]){
if(u == p) continue;
if(u == ban1 && v == ban2) continue;
if(v == ban1 && u == ban2) continue;
dfs(v, u);
}
}
void solve(lli pos){
POS = pos;
// if(n == s){
// dfs(0, e);
// if(check) cout << "escaped\n";
// else cout << 0 << '\n';
// }
// else{
dfs(0, POS);
if(mini == inf) cout << "oo\n";
else{
if(mini == -1) cout << "escaped\n";
else cout << mini << '\n';
}
// }
}
////================= Notes =================////
/*
*/
////============ End of Templates ============////
int main() {
IOS
cin >> n >> s >> q >> e;
for(lli i =1; i < n; i++){
lli x, y, w;
cin >> x >> y >> w;
adj[x].pb(y);
adj[y].pb(x);
wi[x][y] =w;
wi[y][x] =w;
ed[i] = mp(x, y);
}
for(lli i =0; i < s; i++){
lli x;
cin >> x;
st[x] =1;
}
while(q--){
lli ban, pOs;
cin >> ban >> pOs;
ban1 = ed[ban].F;
ban2 = ed[ban].S;
mini =inf;
memset(dis, 0, sizeof dis);
solve(pOs);
}
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
return 0;
}
//Hewwo OwO
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
631 ms |
1048576 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
38 ms |
75592 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
3 ms |
19036 KB |
Output isn't correct |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
34 ms |
75612 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
631 ms |
1048576 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
34 ms |
75692 KB |
Execution killed with signal 11 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
631 ms |
1048576 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
631 ms |
1048576 KB |
Execution killed with signal 9 |
2 |
Halted |
0 ms |
0 KB |
- |