Submission #1307944

#TimeUsernameProblemLanguageResultExecution timeMemory
1307944shisp1Valley (BOI19_valley)C++20
0 / 100
87 ms29276 KiB
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define int long long
using namespace std;
const int mod = 1e9+7;
const ll inf = 1e18;
const int N = 2e5+5;
int n,s,q,e, a[N], U[N], V[N], W[N], up[N][20], timer = 0, tin[N], tout[N];
vector<int>g[N];
void dfs(int v, int p) {
    tin[v] = ++timer;
    up[v][0] = p;
    for(int i = 1;i<20;i++) {
        up[v][i] = up[up[v][i-1]][i-1];
    }
    for(auto to:g[v]) {
        if(to == p) continue;
        dfs(to,v);
    }
    tout[v] = timer;
}
bool check(int a, int b) {
    return tin[a]<=tin[b] && tout[a]>=tout[b];
}
int lca(int a, int b) {
    if(check(a,b)) return a;
    if(check(b,a)) return b;
    for(int k = 19;k>=0;k--) {
        if(!check(up[a][k],b)) {
            a = up[a][k];
        }
    }
    return up[a][0];
}
void solve() {
    cin >> n >> s >> q >> e;
    vector<pair<int,int>>edjes;
    for(int i = 1;i<n;i++) {
        cin >> U[i] >> V[i] >> W[i];
        g[U[i]].pb(V[i]);
        g[V[i]].pb(U[i]);
        edjes.pb({U[i],V[i]});

    }
    for(int i = 1;i<=s;i++) {
        cin >> a[i];
    }
    dfs(e,e);
    while(q--) {
        int i, r;
        cin >> i >> r;
        int u = U[i], v=V[i];
        if(check(v,r) == check(v,e)) {
            cout << "escaped\n";
        } else {
            cout << "0\n";
        }
    }
}
signed main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int tt=1;
    //cin >> tt;
    while(tt--) {
        solve();
    }





    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...