106452024-04-07 17:47:52111XORfa visszatércpp17Hibás válasz 0/100486ms5940 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;
				p[y].push_back(x);
				ans.insert(v[x]^v[y]);
			}
			p[a].clear();
		}
		else{
			int y=a;
			for(int z:s){
				if((v[a]^v[z])>(v[a]^v[y])){
					y=z;
				}
			}
			ans.insert(v[a]^v[y]);
			u[a]=y;
			p[y].push_back(a);
			s.insert(a);
		}
		cout<<*--ans.end()<<'\n';
	}
	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva3ms1832 KiB
2Elfogadva3ms2020 KiB
subtask20/11
3Hibás válasz3ms2380 KiB
4Futási hiba3ms2424 KiB
5Hibás válasz3ms2596 KiB
6Hibás válasz3ms2548 KiB
7Hibás válasz3ms2672 KiB
8Hibás válasz3ms2760 KiB
9Hibás válasz3ms2756 KiB
10Hibás válasz3ms2900 KiB
11Hibás válasz3ms2872 KiB
12Hibás válasz3ms2932 KiB
13Hibás válasz3ms3020 KiB
subtask30/13
14Futási hiba2ms2928 KiB
15Futási hiba3ms3072 KiB
16Futási hiba2ms3084 KiB
17Futási hiba3ms3296 KiB
18Futási hiba3ms3272 KiB
19Futási hiba3ms3264 KiB
20Futási hiba2ms3268 KiB
21Futási hiba3ms3500 KiB
22Futási hiba3ms3484 KiB
23Futási hiba3ms3724 KiB
subtask40/17
24Hibás válasz6ms4028 KiB
25Hibás válasz4ms4020 KiB
26Hibás válasz7ms4048 KiB
27Hibás válasz8ms4592 KiB
28Elfogadva8ms4432 KiB
29Hibás válasz4ms4388 KiB
30Hibás válasz6ms4428 KiB
31Hibás válasz6ms4396 KiB
32Hibás válasz472ms5940 KiB
33Hibás válasz486ms5892 KiB
34Hibás válasz476ms5924 KiB
35Hibás válasz474ms5924 KiB
subtask50/59
36Futási hiba3ms4336 KiB
37Futási hiba2ms4332 KiB
38Futási hiba3ms4336 KiB
39Futási hiba2ms4432 KiB
40Futási hiba3ms4536 KiB
41Futási hiba3ms4636 KiB
42Futási hiba3ms4764 KiB
43Futási hiba3ms4772 KiB
44Futási hiba3ms4676 KiB
45Futási hiba3ms4676 KiB
46Futási hiba3ms4556 KiB
47Futási hiba3ms4648 KiB
48Futási hiba3ms4552 KiB
49Futási hiba3ms4652 KiB