博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷——P2420 让我们异或吧
阅读量:5090 次
发布时间:2019-06-13

本文共 1024 字,大约阅读时间需要 3 分钟。

题目描述

异或是一种神奇的运算,大部分人把它总结成不进位加法.

在生活中…xor运算也很常见。比如,对于一个问题的回答,是为1,否为0.那么:

(A是否是男生 )xor( B是否是男生)=A和B是否能够成为情侣

好了,现在我们来制造和处理一些复杂的情况。比如我们将给出一颗树,它很高兴自己有N个结点。树的每条边上有一个权值。我们要进行M次询问,对于每次询问,我们想知道某两点之间的路径上所有边权的异或值。

输入输出格式

输入格式:

 

输入文件第一行包含一个整数N,表示这颗开心的树拥有的结点数,以下有N-1行,描述这些边,每行有3个数,u,v,w,表示u和v之间有一条权值为w的边。接下来一行有一个整数M,表示询问数。之后的M行,每行两个数u,v,表示询问这两个点之间的路径上的权值异或值。

 

输出格式:

 

输出M行,每行一个整数,表示异或值

 

输入输出样例

输入样例#1:
51 4 96442 5 150043 1 146355 3 968432 45 41 1
输出样例#1:
975146750

说明

对于40%的数据,有1 ≤ N,M ≤ 3000;

对于100%的数据,有1 ≤ N ,M≤ 100000。

 

1 #include 
2 #include
3 #include
4 5 using namespace std; 6 7 const int N(100015); 8 vector< pair
>vec[N]; 9 int n,x,y,w,m;10 int dad[N<<1];11 int dis[N<<1];12 13 void read(int &x)14 {15 int ch=getchar(),if_=0; x=0;16 while(ch<'0'||ch>'9') ch=getchar();17 while(ch>='0'&&ch<='9')18 x=x*10+ch-'0', ch=getchar();19 }20 21 void DFS(int x)22 {23 for(int i=0;i

 

转载于:https://www.cnblogs.com/Shy-key/p/6815627.html

你可能感兴趣的文章
Spotlight的连接设置
查看>>
简单封装数据库类
查看>>
cocos2d-x初探学习笔记(21)--精灵类
查看>>
Android中资源文件夹res/raw和assets的使用
查看>>
luogu 4240 毒瘤之神的考验 (莫比乌斯反演)
查看>>
SVN服务器配置以及Eclipse使用SVN
查看>>
python爬取股票信息
查看>>
判断是64位操作系统还是32位系统
查看>>
半监督学习
查看>>
微信公众号菜单与应用交互session
查看>>
lavarel5.2官方文档阅读——架构基础
查看>>
Class文件结构
查看>>
学好编程前 先看看这些
查看>>
一本通1641【例 1】矩阵 A×B
查看>>
[CLR via C#]5.4 对象哈希码和dynamic基元类型
查看>>
C++智能指针
查看>>
2012年总结
查看>>
form表单select联动
查看>>
git 快捷键
查看>>
Airtime 2.2 发布,电台管理软件
查看>>