제출 #567448

#제출 시각아이디문제언어결과실행 시간메모리
567448_karan_gandhiValley (BOI19_valley)C++17
23 / 100
134 ms18756 KiB
#include <bits/stdc++.h> using namespace std; #define all(v) v.begin(), v.end() #define endl '\n' #define pl(var) " [" << #var << ": " << (var) << "] " #define ll long long vector<vector<pair<int, int>>> adj; vector<int> tin, tout; vector<ll int> dist, dp1, dp2; vector<bool> shop; int timer = 0; void dfs(int u, int par, ll int dis) { dist[u] = dis; tin[u] = timer++; for (auto [v, w] : adj[u]) { if (v == par) continue; dfs(v, u, dis + w); } if (shop[u]) dp1[u] = 0; else dp1[u] = 1e16; for (auto [v, _] : adj[u]) { if (v == par) continue; dp1[u] = min(dp1[u], dp1[v] + 1); } tout[u] = timer - 1; } bool is_acc(int acc, int child) { if (acc == child) return 1; return tin[acc] < tin[child] && tin[child] <= tout[acc]; } void solve() { int n, s, q, e; cin >> n >> s >> q >> e; adj.resize(n); dp1.resize(n); dp2.resize(n); tin.resize(n); tout.resize(n); dist.resize(n); shop.resize(n); vector<pair<pair<int, int>, int>> edges; for (int i = 0; i < n - 1; i++) { int a, b; cin >> a >> b; int c; cin >> c; a--, b--; adj[a].emplace_back(b, c); adj[b].emplace_back(a, c); edges.emplace_back(make_pair(a, b), c); } for (int i = 0; i < s; i++) { int a; cin >> a; shop[a - 1] = 1; } // e is the root dfs(e - 1, e - 1, 0); // cout << pl(tin[0]) << endl; while (q--) { int a, b; cin >> a >> b; a--, b--; pair<int, int> edge = edges[a].first; // cout << pl(edge.first) << pl(edge.second) << pl(is_acc(edge.first, b)) << pl(is_acc(edge.second, b)) << pl(b) << endl; if (is_acc(edge.first, b) && is_acc(edge.second, b)) { cout << 0 << endl; } else { cout << "escaped" << endl; } } } int main() { // freopen(".in", "r", stdin); // freopen(".out", "w", stdout); ios::sync_with_stdio(false); cin.tie(nullptr); int T = 1; // cin >> T; while (T--) solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...