1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define for(i,a,b) for(int i=a;i<=b;++i)
  4. //T,N,Q,,u,v,w,s,tree[maxn][?],val[maxn],cashbook[maxn*2],ans
  5. const int maxn=1e5+5;
  6. struct node
  7. {
  8. int i,v;
  9. node(){}
  10. node(int a,int b){i=a,v=b;}
  11. };
  12. vector<node> tree[maxn];
  13. int val[maxn],cashbook[2*maxn],s;
  14. long long ans;
  15. void dfs(int i,int p)
  16. {
  17. //record in cashbook[]
  18. cashbook[val[i]]++;
  19. //renew ans;
  20. ans+=cashbook[s^val[i]];
  21. //move to sons, cal their value
  22. int nei=tree[i].size();
  23. for(j,0,nei-1)
  24. {
  25. int name=tree[i][j].i;
  26. if(name==p)continue;
  27. val[name]=val[i]^tree[i][j].v;
  28. dfs(name,i);
  29. }
  30. }
  31. int main()
  32. {
  33. int T;scanf("%d",&T);
  34. while(T--)
  35. {
  36. //construct the tree
  37. int N,u,v,w;scanf("%d",&N);
  38. for(i,1,N)tree[i].clear();
  39. for(i,1,N-1)
  40. {
  41. scanf("%d%d%d",&u,&v,&w);
  42. tree[u].push_back(node(v,w));
  43. tree[v].push_back(node(u,w));
  44. }
  45. //query
  46. int Q;scanf("%D",&Q);
  47. while(Q--)
  48. {
  49. memset(cashbook,0,sizeof cashbook);
  50. memset(val,0,sizeof val);
  51. ans=0;
  52. scanf("%d",&s);
  53. dfs(1,0);
  54. //print ans
  55. printf("%lld\n",ans);
  56. }
  57. }
  58. }

HDU 5416 CBR and tree的更多相关文章

  1. Hdu 5416 CRB and Tree (bfs)

    题目链接: Hdu 5416 CRB and Tree 题目描述: 给一棵树有n个节点,树上的每条边都有一个权值.f(u,v)代表从u到v路径上所有边权的异或值,问满足f(u,v)==m的(u, v) ...

  2. HDU 5416 CRB and Tree(前缀思想+DFS)

    CRB and Tree Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Tot ...

  3. HDU 5416——CRB and Tree——————【DFS搜树】

    CRB and Tree Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  4. hdu 5416 CRB and Tree(2015 Multi-University Training Contest 10)

    CRB and Tree                                                             Time Limit: 8000/4000 MS (J ...

  5. HDU 5416 CRB and Tree (2015多校第10场)

    欢迎參加--每周六晚的BestCoder(有米!) CRB and Tree Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536 ...

  6. HDU 5416 CRB and Tree

    题目大意: T, T组测试数据 给你一个n有n个点,下标是从 1 开始的.这个是一棵树,然后下面是n-1条边, 每条边的信息是 s,e,w 代表 s-e的权值是w 然后是一个Q代表Q次询问. 每次询问 ...

  7. HDU 5416 CRB and Tree (技巧)

    题意:给一棵n个节点的树(无向边),有q个询问,每个询问有一个值s,问有多少点对(u,v)的xor和为s? 注意:(u,v)和(v,u)只算一次.而且u=v也是合法的. 思路:任意点对之间的路径肯定经 ...

  8. hdu 5274 Dylans loves tree(LCA + 线段树)

    Dylans loves tree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  9. Hdu 5274 Dylans loves tree (树链剖分模板)

    Hdu 5274 Dylans loves tree (树链剖分模板) 题目传送门 #include <queue> #include <cmath> #include < ...

随机推荐

  1. Java 运行时数据区

    写在前面 本文描述的有关于 JVM 的运行时数据区是基于 HotSpot 虚拟机. 概述 JVM 在执行 Java 程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以 ...

  2. WDK驱动开发点滴

    老程序员做新方向,老树发新芽,作为菜鸟的我,写点心得,用以记录并与同行交流 1对一些概念的理解: KMDF与UMDF.两者的框架,及使用VS生成的初始代码基本相同,只有所包含的头文件不同,链接的系统库 ...

  3. SpringBoot系列之学习教程汇总

    对应SpringBoot系列博客专栏,例子代码,本博客不定时更新 一.配置篇 SpringBoot系列之@PropertySource读取yaml文件     >> source down ...

  4. div实现富文本编辑框

    ocument.execCommand()方法处理Html数据时常用语法格式如下:document.execCommand(sCommand[,交互方式, 动态参数]) 其中:sCommand为指令参 ...

  5. DHCP完整过程详解及Wireshark抓包分析

    DHCP,Dynamic Host Configuration Protocol,动态主机配置协议,简单来说就是主机获取IP地址的过程,属于应用层协议. DHCP采用UDP的68(客户端)和67(服务 ...

  6. Python内置函数分类汇总

    Python解释器内置了很多函数,这些内置函数使用方便,无需导入,直接调用.可以在交互模式下输入dir(__builtins__),输出的列表中包含了所有的内置函数:   1.可迭代对象.序列操作相关 ...

  7. Vue生成分享海报(含二维码)

    本文已同步到专业技术网站 www.sufaith.com, 该网站专注于前后端开发技术与经验分享, 包含Web开发.Nodejs.Python.Linux.IT资讯等板块. 功能需求: 海报有1张背景 ...

  8. ubuntu core文件

    ubuntu开启core 检查是否开启core ulimit -c //0表示没有开启 开启core ulimit -c unlimited sudo sh -c 'echo 1 > /proc ...

  9. Pytest系列(17)- pytest-xdist分布式测试的原理和流程

    pytest-xdist分布式测试的原理 前言 xdist的分布式类似于一主多从的结构,master机负责下发命令,控制slave机:slave机根据master机的命令执行特定测试任务 在xdist ...

  10. Linux Mint(Ubuntu)如何管理开机自动启动项?

    Linux Mint自带了一个简洁的开机自启管理应用,使用方法也很简单: 依次点击“Menu”==>“控制中心”==>“个人”==>“启动应用程序”,界面如图所示: 上面打勾的就是系 ...