#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |