Submission #1306862

#TimeUsernameProblemLanguageResultExecution timeMemory
1306862saken03Valley (BOI19_valley)C++20
0 / 100
48 ms9000 KiB
#include <iostream>
#include <vector>

#define pb push_back

using namespace std;

const int N = 1e5 + 5;

int n, s, q, e;
pair<int, int> edge[N];
vector<int> g[N], shops;
bool is_esc[N];

int in[N], out[N], clk;

void dfs(int v, int p = -1) {
    in[v] = ++clk; 

    for (int to : g[v]) {
        if (to != p) dfs(to, v);
    }

    out[v] = ++clk;
}

bool subtree_of(int a, int b) {
    if (in[a] < in[b] && out[b] < out[a]) return 1;
    return 0;
}

void solve() {
    cin >> n >> s >> q >> e;

    for (int i = 0; i < n - 1; i++) {
        int a, b, c;
        cin >> a >> b >> c;

        g[a].pb(b);
        g[b].pb(a);
        edge[i] = {a, b};
    }

    while (s--) {
        int c;
        cin >> c;
        shops.pb(c);
    }

    dfs(e);

    while (q--) {
        int i, r;
        cin >> i >> r;

        if (subtree_of(e, r)) {
            cout << "escaped\n";
            continue;
        }

        cout << "0\n";
    }
}

int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);

    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...