Submission #844518

#TimeUsernameProblemLanguageResultExecution timeMemory
844518vjudge1Klasika (COCI20_klasika)C++17
33 / 110
5031 ms10776 KiB
#include <bits/stdc++.h> #define endl "\n" #define pb push_back #define int long long using namespace std; const int inf = 2e18 + 5; const int N = 2e5 + 5; const int mod = 1e9 + 7; vector<pair<int, int> > adj[N]; vector<int> child[N]; map<int,int> vis; vector<pair<int,int> > val; void dfs(int node, int ih){ if(vis[node]) return; vis[node] = 1; val.pb({ih, node}); for(auto itr: adj[node]){ dfs(itr.first, (ih ^ itr.second)); } } map<int,int> c; void cbul(int node){ c[node] = 1; for(auto itr: child[node]) cbul(itr); } int32_t main(){ //freopen("in.txt","r", stdin); int q; cin>>q; int ncnt = 1; while(q--){ string s; cin>>s; if(s == "Add"){ int x, y; cin>>x>>y; ncnt++; adj[ncnt].pb({x, y}); adj[x].pb({ncnt, y}); child[x].pb(ncnt); } else{ int a, b; cin>>a>>b; vis.clear(); c.clear(); val.clear(); int ans = 0; dfs(a, 0); cbul(b); for(auto itr: val){ if(c[itr.second]){ ans = max(ans, itr.first); } } cout<<ans<<endl; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...