106462024-04-07 17:51:10111XORfa visszatércpp17Hibás válasz 0/100490ms6204 KiB
#include<bits/stdc++.h>
using namespace std;

#define int long long

signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int N,Q;
	cin>>N>>Q;
	if(N>1000||Q>1000)exit(1);
	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;
	multiset<int>ans;
	vector<int>u(N+1);
	vector<vector<int>>p(N+1);
	while(Q--){
		int a;
		cin>>a;
		if(s.count(a)){
			s.erase(a);
			for(int x:p[a]){
				int y=x;
				for(int z:s){
					if((v[x]^v[z])>(v[x]^v[y])){
						y=z;
					}
				}
				ans.erase(ans.find(v[x]^v[u[x]]));
				u[x]=y;
				if(y!=x){
					p[y].push_back(x);
				}
				ans.insert(v[x]^v[y]);
			}
			p[a].clear();
		}
		else{
			int x=a;
			int y=x;
			for(int z:s){
				if((v[x]^v[z])>(v[x]^v[y])){
					y=z;
				}
			}
			ans.insert(v[x]^v[y]);
			u[x]=y;
			if(y!=x){
				p[y].push_back(x);
			}
			s.insert(x);
		}
		cout<<*--ans.end()<<'\n';
	}
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1828 KiB
2Elfogadva3ms2056 KiB
subtask20/11
3Hibás válasz3ms2248 KiB
4Hibás válasz3ms2592 KiB
5Hibás válasz3ms2548 KiB
6Hibás válasz3ms2668 KiB
7Hibás válasz3ms3036 KiB
8Hibás válasz3ms3024 KiB
9Hibás válasz3ms2984 KiB
10Hibás válasz3ms3252 KiB
11Hibás válasz3ms3580 KiB
12Hibás válasz3ms3788 KiB
13Hibás válasz3ms3864 KiB
subtask30/13
14Futási hiba2ms3872 KiB
15Futási hiba2ms3824 KiB
16Futási hiba2ms3892 KiB
17Futási hiba2ms3904 KiB
18Futási hiba2ms3812 KiB
19Futási hiba3ms3924 KiB
20Futási hiba3ms4272 KiB
21Futási hiba3ms4220 KiB
22Futási hiba3ms4336 KiB
23Futási hiba3ms4332 KiB
subtask40/17
24Hibás válasz6ms4644 KiB
25Hibás válasz4ms4572 KiB
26Hibás válasz7ms4552 KiB
27Hibás válasz8ms4584 KiB
28Elfogadva8ms4844 KiB
29Hibás válasz4ms4648 KiB
30Hibás válasz6ms4652 KiB
31Hibás válasz6ms4832 KiB
32Hibás válasz479ms5940 KiB
33Hibás válasz490ms5932 KiB
34Hibás válasz477ms6196 KiB
35Hibás válasz476ms6204 KiB
subtask50/59
36Futási hiba3ms4756 KiB
37Futási hiba3ms4844 KiB
38Futási hiba3ms4656 KiB
39Futási hiba3ms4648 KiB
40Futási hiba3ms4652 KiB
41Futási hiba3ms4752 KiB
42Futási hiba2ms4648 KiB
43Futási hiba2ms4752 KiB
44Futási hiba2ms4752 KiB
45Futási hiba2ms4752 KiB
46Futási hiba3ms4644 KiB
47Futási hiba3ms4752 KiB
48Futási hiba3ms4856 KiB
49Futási hiba3ms4548 KiB