106552024-04-07 19:00:40111XORfa visszatércpp17Runtime error 28/1001.559s163696 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()){
			exit(1);
		}
		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]);
		}
		if(ans.empty()){
			while(true);
		}
		// for(int i:ans)cout<<i<<' ';cout<<'\n';
		cout<<*--ans.end()<<'\n';
	}
	return 0;
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted3ms1896 KiB
2Accepted3ms2124 KiB
subtask211/11
3Accepted3ms2748 KiB
4Accepted3ms3028 KiB
5Accepted3ms3324 KiB
6Accepted3ms3216 KiB
7Accepted3ms3352 KiB
8Accepted3ms3576 KiB
9Accepted3ms3524 KiB
10Accepted3ms3548 KiB
11Accepted3ms3500 KiB
12Accepted3ms3612 KiB
13Accepted3ms3584 KiB
subtask30/13
14Runtime error30ms16772 KiB
15Time limit exceeded1.549s9472 KiB
16Accepted119ms21400 KiB
17Accepted141ms30500 KiB
18Accepted142ms35180 KiB
19Accepted145ms37776 KiB
20Accepted130ms26080 KiB
21Accepted145ms30600 KiB
22Runtime error30ms16728 KiB
23Runtime error32ms17152 KiB
subtask417/17
24Accepted6ms6820 KiB
25Accepted6ms6912 KiB
26Accepted6ms7196 KiB
27Accepted8ms9560 KiB
28Accepted7ms9312 KiB
29Accepted6ms7184 KiB
30Accepted6ms7228 KiB
31Accepted6ms7176 KiB
32Accepted35ms5536 KiB
33Accepted35ms5560 KiB
34Accepted35ms5484 KiB
35Accepted35ms5572 KiB
subtask50/59
36Accepted231ms94844 KiB
37Accepted233ms87416 KiB
38Accepted340ms161716 KiB
39Accepted303ms163228 KiB
40Accepted308ms163696 KiB
41Accepted231ms94136 KiB
42Accepted266ms94776 KiB
43Accepted233ms94224 KiB
44Accepted261ms94360 KiB
45Accepted174ms87728 KiB
46Time limit exceeded1.527s23488 KiB
47Time limit exceeded1.559s23316 KiB
48Time limit exceeded1.552s23480 KiB
49Time limit exceeded1.559s23476 KiB