Submission #1294478

#TimeUsernameProblemLanguageResultExecution timeMemory
1294478nathlol2Klasika (COCI20_klasika)C++20
33 / 110
33 ms644 KiB
#include <bits/stdc++.h>
using namespace std;
const int N = 2005;
int q, dp[N], in[N], out[N], rin[N], t, cnt = 1;
vector<pair<int, int>> g[N];
void dfs(int u, int p){
    in[u] = ++t;
    rin[t] = u;
    for(auto v : g[u]) if(v.first != p) dp[v.first] = (dp[u] ^ v.second), dfs(v.first, u);
    out[u] = t;
}
signed main(){
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    cin >> q;
    for(int i = 1;i<=q;i++){
        string tp;
        cin >> tp;
        if(tp == "Add"){
            int u, w;
            cin >> u >> w;
            g[++cnt].push_back({u, w});
            g[u].push_back({cnt, w});
            memset(dp, 0, sizeof dp);
            t = 0;
            dfs(1, -1);
        }else{
            int a, b;
            cin >> a >> b;
            int x = dp[a] ^ dp[b], ans = 0;
            for(int j = in[b];j<=out[b];j++){
                ans = max(ans, x ^ (dp[rin[j]] ^ dp[b]));
            }
            cout << ans << '\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...