题目链接:

  Hdu 5416 CRB and Tree

题目描述:

  给一棵树有n个节点,树上的每条边都有一个权值。f(u,v)代表从u到v路径上所有边权的异或值,问满足f(u,v)==m的(u, v)有多少中情况(u, v有可能相同)?

解题思路:

  由于xor的特殊性质。x^x=0,对于求f(u, v) == f(u, 1) ^ f(1, u)。 又因为x^y == z可以推出x^z == y,对于f(u, 1) ^ f(1, v) == m可以转化为m ^ f(1, v) == f(u, 1)。

  可以先遍历一遍树,然后记录下来根节点到每个节点所经过路径的xor值,hash保存xor值出现的次数,然后枚举节点v即可。复杂度O(n*q)

  hash表要开到pow(2,18)左右,如果小的话会wa。

 #include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; typedef long long LL;
const int maxn = ;
struct node
{
int to, next, w;
}edge[maxn]; int arr[maxn], ans[maxn];
int head[maxn], tot; void Add (int from, int to, int w)
{
edge[tot].to = to;
edge[tot].w = w;
edge[tot].next = head[from];
head[from] = tot++;
}
void bfs ()
{
queue <int> Q;
Q.push();
arr[] = ;
while (!Q.empty())
{
int u = Q.front ();
Q.pop();
for (int i=head[u]; i!=-; i=edge[i].next)
{
int v = edge[i].to;
if (arr[v] == -)
{
arr[v] = arr[u] ^ edge[i].w;
Q.push(v);
}
}
}
} int main ()
{
int t, n, q, m;
scanf ("%d", &t);
while (t --)
{
memset (head, -, sizeof(head));
memset (ans, , sizeof(ans));
memset (arr, -, sizeof(arr));
tot = ; scanf ("%d", &n);
for (int i=; i<n; i++)
{
int x, y, z;
scanf ("%d %d %d", &x, &y, &z);
Add (x, y, z);
Add (y, x, z);
} bfs ();
for (int i=; i<=n; i++)
ans[arr[i]] ++; scanf ("%d", &q);
while (q --)
{
LL res = ;
scanf ("%d", &m);
for (int i=; i<=n; i++)
res += ans[m^arr[i]];
if (m == )
res += n;
printf ("%lld\n", res/);
}
}
return ;
}

Hdu 5416 CRB and Tree (bfs)的更多相关文章

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

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

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

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

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

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

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

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

  5. HDU 5416 CRB and Tree

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

  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. 扫描控件Web在线Applet

    基于JAVAEE的B/S架构由于java语言的跨平台性 所以操控Window客户端资源能力有限, 目前比较流行是用其他语言如Delphi,VB,C++开发客户端控件 然后再html中用js调用.    ...

  2. java nio实现非阻塞Socket通信实例

    服务器 package com.java.xiong.Net17; import java.io.IOException; import java.net.InetSocketAddress; imp ...

  3. [LeetCode][Java] Subsets

    题目: Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset ...

  4. android事件分发(二)

    非常早之前写过一篇android事件分发的博客,主要写的是它是怎样分发的,具体非常多原理的东西都没有涉及到.今天就从源代码看android怎样控制它的分发机制. 鉴于手机屏幕的限制,所以android ...

  5. 程序运行中(BSS段、数据段、代码段、堆栈)

    程序运行中(BSS段.数据段.代码段.堆栈) BSS段:(bss segment)通常是指用来存放程序中未初始化的全局变量的一块内存区域.BSS是英文Block Started by Symbol的简 ...

  6. API Copy Big FIles

    public class ApiCopyFile { private const int FO_COPY = 0x0002; private const int FOF_ALLOWUNDO = 0x0 ...

  7. iOS开发中正则式的使用

    iOS开发中正则式的使用 第一:常规的使用方式 NSString *str = @"abcded111093212qweqw"; //找到内部一个即可 NSString *patt ...

  8. 2016/05/11 Thinkphp 3.2.2 验证码 使用 及校验

    先新建一个公共控制器,用于放置验证码的实例化代码(不用新建控制器也行,任意公共控制器都可以). 例如:PublicController.class.php 4 5 6 7 8 9 10 11 12 1 ...

  9. http的session和cookie

    1 http session和http请求之间的关系 http协议是无状态的,一次会话服务端需要处理多次http请求,就算是长连接,也是要发送多次请求的,由于http无状态所有每次的请求都是独立的,服 ...

  10. Form content types

    Forms in HTML documents https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4 17.13.4 Form con ...