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