제출 #1294478

#제출 시각아이디문제언어결과실행 시간메모리
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...