题目大意:
T, T组测试数据
给你一个n有n个点,下标是从 1 开始的。这个是一棵树,然后下面是n-1条边,
每条边的信息是 s,e,w 代表 s-e的权值是w
然后是一个Q代表Q次询问。
每次询问是一个数字a,  代表 所有路径想异或后的值是 a的路径有多少条。
(注:  自己到自己的异或值是0,若a是0要考虑自己到自己)
 
题目分析:
从根节点开始进行一遍DFS求出所有点到 跟节点的异或值。也就得出来了根节点到达其他任何一个点的异或值。
比如 a 是跟节点到A的异或值, b是根节点到B的异或值
那么A->B的路径上的异或值就是  a^b.然后把所有的异或值桶排一下。
注意一点 a^b 的值是可能大于10W的,最大是260000多
 
 
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<iostream>
#include<vector>
#include<queue>
#include<cmath>
using namespace std;
#define INF 0x3fffffff
typedef long long LL;
const LL maxn = ;
const LL mod = 1e9+; bool vis[maxn];
int k, Head[maxn], n, Max = ;
LL num[maxn];
struct node
{
int e, next, w;
}Edge[maxn*]; void AddEdge(int s,int e,int w)
{
Edge[k].w = w;
Edge[k].e = e;
Edge[k].next = Head[s];
Head[s] = k;
k ++;
} void DFS(int root,int a)
{
vis[root] = true;
num[a] ++;
for(int i=Head[root]; i!=-; i=Edge[i].next)
{
int e = Edge[i].e;
if(vis[e] == true)
continue;
DFS(e, a^Edge[i].w);
}
} int main()
{ int Q, T;
scanf("%d", &T);
while(T--)
{
scanf("%d", &n);
k = ;
memset(Head, -, sizeof(Head));
memset(vis, false, sizeof(vis));
memset(num, , sizeof(num));
for(int i=; i<n-; i++)
{
int s, e, w;
scanf("%d %d %d",&s, &e, &w);
AddEdge(s, e, w);
AddEdge(e, s, w);
}
DFS(, ); scanf("%d", &Q);
while( Q --)
{
int a;
LL ans = ;
scanf("%d", &a);
if(a == )
ans += n;
for(int i=; i<=; i++)
{
if(a == )
ans += num[i]*(num[i]-)/;
else if(i < (a^i) && num[i] && num[a^i])
ans += num[i]*num[a^i];
}
printf("%lld\n", ans);
}
}
return ;
}

HDU 5416 CRB 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 (技巧)

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

  7. HDOJ 5416 CRB and Tree DFS

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

  8. HDU 5416 CBR and tree

    #include<bits/stdc++.h> using namespace std; #define for(i,a,b) for(int i=a;i<=b;++i) //T,N ...

  9. 异或+构造 HDOJ 5416 CRB and Tree

    题目传送门 题意:给一棵树,问f (u, v) 意思是u到v的所有路径的边权值的异或和,问f (u, v) == s 的u,v有几对 异或+构造:首先计算f (1, u) 的值,那么f (u, v) ...

随机推荐

  1. at91sam9x5 linux 4.1.0下使能蜂鸣器驱动

    测试环境:  CPU: AT91SAM9X35      Linux: Atmel提供的linux-at91-linux4sam_5.3 (Linux-4.1.0) 转载请注明: 凌云物网智科嵌入式实 ...

  2. webservice 发布到外网的时候

    在web.config的<system.web></system.web>中间加入如下配置节内容<webServices>          <protoco ...

  3. Rouh set 入门知识2(基础定义篇)

    接上一篇,简单说明一下知识库的关系,设K1=(U,S1)和K2=(U,S2)为知识库 1.如果IND(S1)=IND(S2),即U/IND(S1)=U/IND(S2),则知识库K1与知识库K2是等价的 ...

  4. TFS 安装与管理

    整了几天TFS,把相关的一些配置与安装的要点简单记下,希望对大家有用.本篇主要是安装与配置上的内容,下一篇会介绍如何使用以及使用方面的相关心得体会. 本篇内容简要: 1.   安装部署 1.1.  流 ...

  5. window.showModalDialog 子窗口和父窗口不兼容最新的谷歌

    最新版的谷歌不支持window.showModalDialog的写法,会出现,找不到方法的问题,同时返回值的方法window.dialogArguments;也用不了. 这里就只能用最原版的windo ...

  6. Android-自定义多TAB悬浮控件实现蘑菇街首页效果

    因为项目的一些需求需要用到此种展现方式.  找了市面上大部分有类似功能的应用.  基本思路嵌套ScrollView 转换事件分发给listview 实现. 但是此种方案有个缺点. 在ScrollVie ...

  7. c#wiform中KeyDown事件

    当首次按下键盘上某个键时发生事件. 例如 private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Ke ...

  8. CListCtrl 的应用

    CMFCListCtrl实现的功能:比较特别的就是通过CImage来扩展每行的高度 CMFCListCtrl m_lisTestResult; 1.插入列(创建表格) m_lisTestResult. ...

  9. C#【数据库】 Excel打开到DataGridView

    if (openFileDialog1.ShowDialog() == DialogResult.OK) { Filename = openFileDialog1.FileName; string s ...

  10. Markdown 测试

    量化派业务参考代码 测试二级标题 如果 merchant_id 是外部白条,则执行相关逻辑 if(order.getMerchantId() == Constants.BaitiaoMerchant. ...