106522024-04-07 18:56:17111XORfa visszatércpp17Runtime error 28/1001.57s163148 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];
			}
		}
		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
1Accepted3ms1896 KiB
2Accepted3ms2088 KiB
subtask211/11
3Accepted3ms2464 KiB
4Accepted3ms2452 KiB
5Accepted3ms2772 KiB
6Accepted3ms2944 KiB
7Accepted3ms2896 KiB
8Accepted3ms2900 KiB
9Accepted3ms3160 KiB
10Accepted3ms2860 KiB
11Accepted3ms2864 KiB
12Accepted3ms2868 KiB
13Accepted3ms3072 KiB
subtask30/13
14Runtime error30ms16248 KiB
15Runtime error32ms16504 KiB
16Accepted123ms20988 KiB
17Accepted144ms30152 KiB
18Accepted143ms34868 KiB
19Accepted146ms37516 KiB
20Accepted131ms25684 KiB
21Accepted146ms30100 KiB
22Runtime error32ms16576 KiB
23Runtime error30ms16548 KiB
subtask417/17
24Accepted6ms6080 KiB
25Accepted4ms6004 KiB
26Accepted6ms6132 KiB
27Accepted7ms8248 KiB
28Accepted7ms8512 KiB
29Accepted6ms6264 KiB
30Accepted6ms6540 KiB
31Accepted6ms6640 KiB
32Accepted35ms4836 KiB
33Accepted35ms4828 KiB
34Accepted35ms4776 KiB
35Accepted35ms4860 KiB
subtask50/59
36Accepted230ms94232 KiB
37Accepted204ms86488 KiB
38Accepted335ms160956 KiB
39Accepted301ms162504 KiB
40Accepted377ms163148 KiB
41Accepted228ms93544 KiB
42Accepted233ms94012 KiB
43Accepted230ms93468 KiB
44Accepted275ms93616 KiB
45Accepted158ms86924 KiB
46Time limit exceeded1.554s22760 KiB
47Time limit exceeded1.57s22884 KiB
48Time limit exceeded1.539s22912 KiB
49Time limit exceeded1.559s22972 KiB