Submission #1203569

#TimeUsernameProblemLanguageResultExecution timeMemory
1203569HanksburgerKlasika (COCI20_klasika)C++20
33 / 110
5091 ms16580 KiB
#include <bits/stdc++.h> using namespace std; vector<pair<int, int> > adj[200005], adj2[200005]; vector<pair<int, pair<int, int> > > vec; int a[200005], n=1, nn=1, q; void dfs(int u) { for (int i=0; i<adj[u].size(); i++) { int v=adj[u][i].first, w=adj[u][i].second; a[v]=a[u]^w; dfs(v); } } int dfs2(int u, int x) { int mx=x^a[u]; for (int i=0; i<adj2[u].size(); i++) { int v=adj2[u][i].first; mx=max(mx, dfs2(v, x)); } return mx; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> q; for (int i=0; i<q; i++) { string str; int x, y; cin >> str >> x >> y; if (str=="Add") { adj[x].push_back({++n, y}); vec.push_back({1, {x, y}}); } else vec.push_back({0, {x, y}}); } dfs(1); for (int i=0; i<q; i++) { if (vec[i].first) adj2[vec[i].second.first].push_back({++nn, vec[i].second.second}); else cout << dfs2(vec[i].second.second, a[vec[i].second.first]) << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...