10656 2024. 04. 07 19:01:49 111 XORfa visszatér cpp17 Futási hiba 28/100 1.575s 163492 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;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1900 KiB
2 Elfogadva 3ms 2120 KiB
subtask2 11/11
3 Elfogadva 3ms 2484 KiB
4 Elfogadva 3ms 2720 KiB
5 Elfogadva 3ms 3064 KiB
6 Elfogadva 3ms 3228 KiB
7 Elfogadva 3ms 3512 KiB
8 Elfogadva 3ms 3728 KiB
9 Elfogadva 3ms 3856 KiB
10 Elfogadva 3ms 3560 KiB
11 Elfogadva 3ms 3816 KiB
12 Elfogadva 3ms 3768 KiB
13 Elfogadva 3ms 3772 KiB
subtask3 0/13
14 Futási hiba 29ms 16828 KiB
15 Futási hiba 32ms 16832 KiB
16 Elfogadva 120ms 21592 KiB
17 Elfogadva 143ms 30908 KiB
18 Elfogadva 149ms 35552 KiB
19 Elfogadva 146ms 38176 KiB
20 Elfogadva 134ms 26372 KiB
21 Elfogadva 150ms 30760 KiB
22 Futási hiba 29ms 17004 KiB
23 Futási hiba 30ms 16980 KiB
subtask4 17/17
24 Elfogadva 6ms 6504 KiB
25 Elfogadva 4ms 6448 KiB
26 Elfogadva 6ms 6812 KiB
27 Elfogadva 7ms 8800 KiB
28 Elfogadva 7ms 8800 KiB
29 Elfogadva 6ms 6664 KiB
30 Elfogadva 6ms 6932 KiB
31 Elfogadva 6ms 6904 KiB
32 Elfogadva 35ms 5272 KiB
33 Elfogadva 35ms 5268 KiB
34 Elfogadva 35ms 5268 KiB
35 Elfogadva 35ms 5268 KiB
subtask5 0/59
36 Elfogadva 268ms 94632 KiB
37 Elfogadva 228ms 86876 KiB
38 Elfogadva 340ms 161216 KiB
39 Elfogadva 300ms 162980 KiB
40 Elfogadva 379ms 163492 KiB
41 Elfogadva 229ms 93900 KiB
42 Elfogadva 231ms 94568 KiB
43 Elfogadva 263ms 94020 KiB
44 Elfogadva 230ms 94168 KiB
45 Elfogadva 156ms 87544 KiB
46 Időlimit túllépés 1.549s 23484 KiB
47 Időlimit túllépés 1.564s 23564 KiB
48 Időlimit túllépés 1.575s 23496 KiB
49 Időlimit túllépés 1.562s 23492 KiB