Submission #1221406

#TimeUsernameProblemLanguageResultExecution timeMemory
1221406colossal_pepeSynchronization (JOI13_synchronization)C++20
20 / 100
66 ms47176 KiB
#include <bits/stdc++.h> using namespace std; // DEBUG TOOLS #ifdef _LOCAL #define LOG(msg) cerr << "DEBUG: " << msg << endl #else #define LOG(msg) #endif // DEBUG TOOLS int n, m, q; vector<vector<pair<int, int>>> g; vector<vector<pair<int, int>>> et; vector<int> roots; bool bad() { long long x = (long long)n * (long long)q; return x > (long long)1e8; } vector<int> solve(int root) { multiset<int> s = {0}; auto dfs = [&s](const auto& self, int u, int par, map<int, int> m_cur) -> void { for (auto [i, v] : g[u]) { if (v == par) continue; LOG("BRUH KOTHAY " << i << ' ' << v); map<int, int> m_nxt; for (auto [l, r] : et[i]) { LOG("HELLO " << u << ' ' << v << ' ' << l << ' ' << r); auto itr = m_cur.lower_bound(l); if (itr == m_cur.end()) continue; m_nxt[r] = max(itr->second, l); } LOG("UMM"); if (m_nxt.empty()) continue; s.insert(m_nxt.begin()->second); LOG("SHESH"); self(self, v, u, m_nxt); } }; dfs(dfs, root, -1, {{m + 1, 0}}); vector<int> ret(s.begin(), s.end()); return ret; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m >> q; if (bad()) return 0; g.resize(n); for (int i = 0; i < n - 1; i++) { int u, v; cin >> u >> v; u--, v--; g[u].push_back(make_pair(i, v)); g[v].push_back(make_pair(i, u)); } et.resize(n - 1); for (int i = 1; i <= m; i++) { int j; cin >> j; j--; if (et[j].empty() or et[j].back().second != m + 1) et[j].push_back(make_pair(i, m + 1)); else et[j].back().second = i; } roots.resize(q); for (int &v : roots) { cin >> v; v--; vector<int> ans = solve(v); cout << ans.size() << '\n'; } 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...
#Verdict Execution timeMemoryGrader output
Fetching results...