10655 2024. 04. 07 19:00:40 111 XORfa visszatér cpp17 Futási hiba 28/100 1.559s 163696 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;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1896 KiB
2 Elfogadva 3ms 2124 KiB
subtask2 11/11
3 Elfogadva 3ms 2748 KiB
4 Elfogadva 3ms 3028 KiB
5 Elfogadva 3ms 3324 KiB
6 Elfogadva 3ms 3216 KiB
7 Elfogadva 3ms 3352 KiB
8 Elfogadva 3ms 3576 KiB
9 Elfogadva 3ms 3524 KiB
10 Elfogadva 3ms 3548 KiB
11 Elfogadva 3ms 3500 KiB
12 Elfogadva 3ms 3612 KiB
13 Elfogadva 3ms 3584 KiB
subtask3 0/13
14 Futási hiba 30ms 16772 KiB
15 Időlimit túllépés 1.549s 9472 KiB
16 Elfogadva 119ms 21400 KiB
17 Elfogadva 141ms 30500 KiB
18 Elfogadva 142ms 35180 KiB
19 Elfogadva 145ms 37776 KiB
20 Elfogadva 130ms 26080 KiB
21 Elfogadva 145ms 30600 KiB
22 Futási hiba 30ms 16728 KiB
23 Futási hiba 32ms 17152 KiB
subtask4 17/17
24 Elfogadva 6ms 6820 KiB
25 Elfogadva 6ms 6912 KiB
26 Elfogadva 6ms 7196 KiB
27 Elfogadva 8ms 9560 KiB
28 Elfogadva 7ms 9312 KiB
29 Elfogadva 6ms 7184 KiB
30 Elfogadva 6ms 7228 KiB
31 Elfogadva 6ms 7176 KiB
32 Elfogadva 35ms 5536 KiB
33 Elfogadva 35ms 5560 KiB
34 Elfogadva 35ms 5484 KiB
35 Elfogadva 35ms 5572 KiB
subtask5 0/59
36 Elfogadva 231ms 94844 KiB
37 Elfogadva 233ms 87416 KiB
38 Elfogadva 340ms 161716 KiB
39 Elfogadva 303ms 163228 KiB
40 Elfogadva 308ms 163696 KiB
41 Elfogadva 231ms 94136 KiB
42 Elfogadva 266ms 94776 KiB
43 Elfogadva 233ms 94224 KiB
44 Elfogadva 261ms 94360 KiB
45 Elfogadva 174ms 87728 KiB
46 Időlimit túllépés 1.527s 23488 KiB
47 Időlimit túllépés 1.559s 23316 KiB
48 Időlimit túllépés 1.552s 23480 KiB
49 Időlimit túllépés 1.559s 23476 KiB