106442024-04-07 17:46:44111XORfa visszatércpp17Hibás válasz 0/1001.587s20348 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;
	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;
				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
2Elfogadva3ms2048 KiB
subtask20/11
3Hibás válasz3ms2296 KiB
4Hibás válasz3ms2628 KiB
5Hibás válasz3ms2960 KiB
6Hibás válasz3ms2892 KiB
7Hibás válasz3ms3092 KiB
8Hibás válasz3ms3188 KiB
9Hibás válasz3ms3276 KiB
10Hibás válasz3ms3412 KiB
11Hibás válasz3ms3756 KiB
12Hibás válasz3ms3976 KiB
13Hibás válasz3ms3920 KiB
subtask30/13
14Hibás válasz61ms18436 KiB
15Hibás válasz64ms18316 KiB
16Időlimit túllépés1.574s10628 KiB
17Időlimit túllépés1.57s10524 KiB
18Időlimit túllépés1.562s10376 KiB
19Időlimit túllépés1.567s10632 KiB
20Időlimit túllépés1.557s10800 KiB
21Időlimit túllépés1.587s10988 KiB
22Hibás válasz64ms19360 KiB
23Hibás válasz67ms19324 KiB
subtask40/17
24Hibás válasz6ms5228 KiB
25Hibás válasz4ms5488 KiB
26Hibás válasz7ms5580 KiB
27Hibás válasz8ms5620 KiB
28Elfogadva8ms5748 KiB
29Hibás válasz4ms5544 KiB
30Hibás válasz6ms5720 KiB
31Hibás válasz6ms5756 KiB
32Hibás válasz16ms5708 KiB
33Hibás válasz16ms5672 KiB
34Hibás válasz16ms5672 KiB
35Hibás válasz16ms5688 KiB
subtask50/59
36Időlimit túllépés1.55s11568 KiB
37Időlimit túllépés1.534s11716 KiB
38Időlimit túllépés1.567s11576 KiB
39Időlimit túllépés1.562s11512 KiB
40Időlimit túllépés1.554s11712 KiB
41Időlimit túllépés1.562s11752 KiB
42Időlimit túllépés1.577s11928 KiB
43Időlimit túllépés1.557s11936 KiB
44Időlimit túllépés1.577s12016 KiB
45Hibás válasz163ms20348 KiB
46Időlimit túllépés1.559s12068 KiB
47Időlimit túllépés1.565s12280 KiB
48Időlimit túllépés1.546s12604 KiB
49Időlimit túllépés1.57s12464 KiB