106562024-04-07 19:01:49111XORfa visszatércpp17Runtime error 28/1001.575s163492 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

struct Trie{
	vector<array<int,2>>t;
	vector<int>c;
	vector<set<int>>v;
	
	Trie():t(1),c(1),v(1){
	}
	
	void add(int n,int x){
		int y=0;
		for(int i=30;i>=0;i--){
			int b=x>>i&1;
			if(t[y][b]==0){
				t[y][b]=t.size();
				t.emplace_back();
				c.emplace_back();
				v.emplace_back();
			}
			y=t[y][b];
			c[y]++;
		}
		v[y].insert(n);
	}
	
	void rem(int n,int x){
		int y=0;
		for(int i=30;i>=0;i--){
			int b=x>>i&1;
			y=t[y][b];
			c[y]--;
		}
		v[y].erase(n);
	}
	
	int get(int x){
		int y=0;
		for(int i=30;i>=0;i--){
			int b=x>>i&1;
			if(c[t[y][b^1]]){
				y=t[y][b^1];
			}
			else{
				y=t[y][b];
			}
		}
		if(v[y].empty()){
			while(true);
		}
		return *v[y].begin();
	}
};

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N,Q;
	cin>>N>>Q;
	vector<vector<pair<int,int>>>g(N+1);
	for(int i=0;i<N-1;i++){
		int a,b,w;
		cin>>a>>b>>w;
		g[a].emplace_back(b,w);
		g[b].emplace_back(a,w);
	}
	vector<int>v(N+1);
	auto dfs=[&](auto self,int i,int p,int x)->void{
		v[i]=x;
		for(auto[j,w]:g[i]){
			if(j==p){
				continue;
			}
			self(self,j,i,x^w);
		}
	};
	dfs(dfs,1,0,0);
	set<int>s;
	Trie t;
	vector<set<int>>p(N+1);
	multiset<int>ans;
	ans.insert(0);
	while(Q--){
		int x;
		cin>>x;
		if(s.count(x)){
			s.erase(x);
			t.rem(x,v[x]);
			for(int y:p[x]){
				p[y].erase(x);
				ans.erase(ans.find(v[x]^v[y]));
				if(s.size()>1){
					int z=t.get(v[y]);
					if(!p[y].count(z)){
						ans.insert(v[y]^v[z]);
						p[y].insert(z);
						p[z].insert(y);
					}
				}
			}
			p[x].clear();
		}
		else{
			if(!s.empty()){
				int y=t.get(v[x]);
				if(!p[x].count(y)){
					ans.insert(v[x]^v[y]);
					p[x].insert(y);
					p[y].insert(x);
				}
			}
			s.insert(x);
			t.add(x,v[x]);
		}
		// for(int i:ans)cout<<i<<' ';cout<<'\n';
		cout<<*--ans.end()<<'\n';
	}
	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1900 KiB
2Accepted3ms2120 KiB
subtask211/11
3Accepted3ms2484 KiB
4Accepted3ms2720 KiB
5Accepted3ms3064 KiB
6Accepted3ms3228 KiB
7Accepted3ms3512 KiB
8Accepted3ms3728 KiB
9Accepted3ms3856 KiB
10Accepted3ms3560 KiB
11Accepted3ms3816 KiB
12Accepted3ms3768 KiB
13Accepted3ms3772 KiB
subtask30/13
14Runtime error29ms16828 KiB
15Runtime error32ms16832 KiB
16Accepted120ms21592 KiB
17Accepted143ms30908 KiB
18Accepted149ms35552 KiB
19Accepted146ms38176 KiB
20Accepted134ms26372 KiB
21Accepted150ms30760 KiB
22Runtime error29ms17004 KiB
23Runtime error30ms16980 KiB
subtask417/17
24Accepted6ms6504 KiB
25Accepted4ms6448 KiB
26Accepted6ms6812 KiB
27Accepted7ms8800 KiB
28Accepted7ms8800 KiB
29Accepted6ms6664 KiB
30Accepted6ms6932 KiB
31Accepted6ms6904 KiB
32Accepted35ms5272 KiB
33Accepted35ms5268 KiB
34Accepted35ms5268 KiB
35Accepted35ms5268 KiB
subtask50/59
36Accepted268ms94632 KiB
37Accepted228ms86876 KiB
38Accepted340ms161216 KiB
39Accepted300ms162980 KiB
40Accepted379ms163492 KiB
41Accepted229ms93900 KiB
42Accepted231ms94568 KiB
43Accepted263ms94020 KiB
44Accepted230ms94168 KiB
45Accepted156ms87544 KiB
46Time limit exceeded1.549s23484 KiB
47Time limit exceeded1.564s23564 KiB
48Time limit exceeded1.575s23496 KiB
49Time limit exceeded1.562s23492 KiB