10669 2024. 04. 07 20:25:15 111 XORfa visszatér cpp17 Időlimit túllépés 11/100 1.585s 522060 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

struct Trie{
	vector<array<int,2>>t;
	int b;
	
	Trie():t(1),b(0){
	}
	
	void add(int x){
		if(t.size()>1){
			b=max(b,get(x));
		}
		int y=0;
		for(int i=30;i>=0;i--){
			int b=x>>i&1;
			if(!t[y][b]){
				t[y][b]=t.size();
				t.emplace_back();
			}
			y=t[y][b];
		}
	}
	
	int get(int x){
		int y=0;
		int z=0;
		for(int i=30;i>=0;i--){
			int b=x>>i&1;
			if(t[y][b^1]){
				y=t[y][b^1];
				z^=1<<i;
			}
			else{
				y=t[y][b];
			}
		}
		return z;
	}
};

struct ST{
	int n;
	vector<Trie>t;
	vector<vector<int>>d;

	ST(int n):n(n),t(n*4),d(n*4){
	}

	void update(int i,int l,int r,int ll,int rr,int xx){
		if(r<ll||l>rr){
			return;
		}
		t[i].add(xx);
		if(l>=ll&&r<=rr){
			d[i].push_back(xx);
			return;
		}
		update(i*2+1,l,(l+r)/2,ll,rr,xx);
		update(i*2+2,(l+r)/2+1,r,ll,rr,xx);
	}

	int query(int i,int l,int r,int pp){
		if(r<pp||l>pp){
			return 0;
		}
		int ans=0;
		if(l==r){
			return t[i].b;
		}
		for(int x:d[i]){
			t[i*2+1].add(x);
			d[i*2+1].push_back(x);
			t[i*2+2].add(x);
			d[i*2+2].push_back(x);
		}
		d[i].clear();
		ans=max(ans,query(i*2+1,l,(l+r)/2,pp));
		ans=max(ans,query(i*2+2,(l+r)/2+1,r,pp));
		return ans;
	}
};

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);
	vector<int>s(N+1,-1);
	ST st(Q);
	for(int i=0;i<Q;i++){
		int x;
		cin>>x;
		if(s[x]==-1){
			s[x]=i;
		}
		else{
			st.update(0,0,Q-1,s[x],i-1,v[x]);
			s[x]=-1;
		}
	}
	for(int x=1;x<=N;x++){
		if(s[x]!=-1){
			st.update(0,0,Q-1,s[x],Q-1,v[x]);
		}
	}
	for(int i=0;i<Q;i++){
		cout<<st.query(0,0,Q-1,i)<<'\n';
	}
	return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
subtask1 0/0
1 Elfogadva 3ms 1832 KiB
2 Elfogadva 3ms 2060 KiB
subtask2 11/11
3 Elfogadva 6ms 6844 KiB
4 Elfogadva 4ms 5740 KiB
5 Elfogadva 8ms 10248 KiB
6 Elfogadva 7ms 7900 KiB
7 Elfogadva 6ms 7576 KiB
8 Elfogadva 8ms 9736 KiB
9 Elfogadva 6ms 7892 KiB
10 Elfogadva 4ms 4552 KiB
11 Elfogadva 6ms 4768 KiB
12 Elfogadva 4ms 4964 KiB
13 Elfogadva 4ms 5172 KiB
subtask3 0/13
14 Elfogadva 319ms 201152 KiB
15 Elfogadva 428ms 225784 KiB
16 Időlimit túllépés 1.572s 162964 KiB
17 Időlimit túllépés 1.574s 156016 KiB
18 Időlimit túllépés 1.557s 152056 KiB
19 Időlimit túllépés 1.582s 152600 KiB
20 Időlimit túllépés 1.585s 159964 KiB
21 Időlimit túllépés 1.582s 156332 KiB
22 Elfogadva 391ms 226252 KiB
23 Elfogadva 391ms 226132 KiB
subtask4 0/17
24 Elfogadva 284ms 305564 KiB
25 Elfogadva 135ms 157816 KiB
26 Elfogadva 444ms 456248 KiB
27 Futási hiba 518ms 522060 KiB
28 Futási hiba 527ms 522036 KiB
29 Elfogadva 247ms 273380 KiB
30 Elfogadva 317ms 334872 KiB
31 Elfogadva 314ms 334464 KiB
32 Elfogadva 228ms 54940 KiB
33 Elfogadva 228ms 54936 KiB
34 Elfogadva 231ms 54792 KiB
35 Elfogadva 231ms 54916 KiB
subtask5 0/59
36 Futási hiba 657ms 521908 KiB
37 Futási hiba 782ms 521888 KiB
38 Futási hiba 725ms 521856 KiB
39 Futási hiba 823ms 521848 KiB
40 Futási hiba 845ms 521824 KiB
41 Futási hiba 790ms 521816 KiB
42 Futási hiba 647ms 521808 KiB
43 Futási hiba 656ms 521804 KiB
44 Futási hiba 787ms 521592 KiB
45 Futási hiba 550ms 521588 KiB
46 Futási hiba 1.371s 521600 KiB
47 Futási hiba 1.296s 521588 KiB
48 Futási hiba 1.368s 521588 KiB
49 Futási hiba 1.297s 521588 KiB