P2420 让我们异或吧

链接Miku

dfs就行了

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
int head[100001];
int p;
int n;
int m;
int x,y,z;
int dis[100001];
struct e{
	int to;
	int ne;
	int v;
}ed[200001];
void add(int f,int t,int v){
	p++;
	ed[p].ne=head[f];
	ed[p].to=t;
	ed[p].v=v;
	head[f]=p;
	return ;
}
void dfs(int now,int f){
	for(int i=head[now];i;i=ed[i].ne){
		if(ed[i].to==f) continue;
		 dis[ed[i].to]=dis[now]^ed[i].v;
		 dfs(ed[i].to,now);
	} 
	return ;
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<n;++i){
		scanf("%d%d%d",&x,&y,&z);
		add(x,y,z);
		add(y,x,z);
	}
	scanf("%d",&m);
	dfs(1,1);
	for(int i=1;i<=m;++i){
		scanf("%d%d",&x,&y);
		x=dis[x]^dis[y];
		cout<< x <<endl;
	}
	return 0; 
}
posted @ 2020-09-05 20:57  Simex  阅读(91)  评论(0编辑  收藏  举报