苦恼的郭大侠

题目连接:

http://acm.uestc.edu.cn/#/problem/show/1284

Description

花开雷霆崖,血染伊吕波。

公元1772年。

郭大侠终于照着天行廖的叮嘱,摆出了阵型,准备带着部队与天行廖相逢于雷霆崖。

但郭大侠实在是没有把握,这个阵型是真的如天行廖所言,所向披靡,于是准备在于天行廖相逢前再确认一遍。

按照天行廖的叮嘱说,这个阵型得满足以下两个要求才能发挥最大威力:

1.这个阵型是一颗树,即n个点,n-1条边,任意两点之间都能互相到达。

2.这个阵型满足好朋友的对数大于n对,好朋友即满足P(u,v)=0,P(u,v)表示从u点到v点的简单路径上点编号的异或和。注意P(u,v)和P(v,u)视作一样,只计数一次。

郭大侠的士兵的的确确摆出了一颗树,但是点数太多了,很难统计好朋友的对数。

这可怎么办?

现在郭大侠找到了你,希望你能帮助憔悴的郭大侠解决这个问题,希望你能够数出这棵树上究竟有多少对好朋友。

Input

第一行n,表示点的数量,(1<=n<=100000)

接下来n-1行,每行两个整数u,v,表示点u与点v之间连有一条边(1<=u,v<=n)

保证是一棵树

Output

输出这棵树上究竟有多少对好朋友。

Sample Input

17
9 8
9 11
9 13
9 15
9 16
11 10
13 12
15 14
16 17
8 1
1 5
5 4
4 6
6 7
7 2
2 3

Sample Output

18

Hint

题意

题解:

map启发式合并就好了

对于每个点暴力统计答案就好了

代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e6+7;
vector<int> E[maxn];
map<int,int> H[maxn];
int pre[maxn];
long long ans = 0;
void uni(int x,int y)
{if(H[x].size()<H[y].size())swap(H[x],H[y]);map<int,int>::iterator it;while(H[y].size()){it=H[y].begin();H[x][it->first]+=it->second;H[y].erase(it);}
}
void dfs(int x,int fa,int val)
{H[x][val]++;for(int i=0;i<E[x].size();i++){int v = E[x][i];if(v == fa)continue;dfs(v,x,val^v);for(auto a:H[v]){int t = a.first^x;if(H[x].count(t))ans+=1ll*H[x][t]*a.second;}uni(x,v);}
}
int main()
{int n;scanf("%d",&n);for(int i=1;i<n;i++){int x,y;scanf("%d%d",&x,&y);E[x].push_back(y);E[y].push_back(x);}dfs(1,0,1);cout<<ans<<endl;
}

转载于:https://www.cnblogs.com/qscqesze/p/5261616.html

CDOJ 1284 苦恼的郭大侠 map启发式合并相关推荐

  1. [UESTC1284] 郭大侠的苦恼

    Description 花开雷霆崖,血染伊吕波. 公元1772年. 郭大侠终于照着天行廖的叮嘱,摆出了阵型,准备带着部队与天行廖相逢于雷霆崖. 但郭大侠实在是没有把握,这个阵型是真的如天行廖所言,所向 ...

  2. 2016 UESTC Training for Data Structures J - 郭大侠与Rabi-Ribi CDOJ 1334 优先队列

    J - 郭大侠与Rabi-Ribi 就是有N只兔子,每只兔子会存在a[i]秒,价值为v[i],然后每秒只能取一只兔子,问能取的兔子总价值的最大值是多少 用一个堆/优先队列维护就好了 首先我们先把兔子按 ...

  3. 【CDOJ 1334】 郭大侠与Rabi-Ribi

    http://acm.uestc.edu.cn/#/problem/show/1334 最近郭大侠迷上了玩Rabi-Ribi这个游戏. Rabi-Ribi呢,是一个打兔子的动作冒险游戏,萌萌哒的兔子在 ...

  4. 2016 UESTC Training for Data Structures K - 郭大侠与甲铁城 CDOJ 1342 离线树状数组

    K - 郭大侠与甲铁城 有一个区间,长度1e5,每个点有一种颜色,颜色属于[1,1000],离线询问某个区间的颜色种树,询问次数也少1e5 我的做法是离线树状数组 首先把区间保存下来,按右端点升序排序 ...

  5. 2016 UESTC Training for Data Structures F - 郭大侠与“有何贵干?” CDOJ 1335 线段树 扫描线 离散化

    F - 郭大侠与"有何贵干?" 就是给一个三维空间,和N个长方体,问覆盖K次的体积 x和y都是1e9,但是z是[1,3],所以可以把这个分为两个二维平面,求被覆盖K次的面积,最后加 ...

  6. cdoj 1334 郭大侠与Rabi-Ribi 贪心+数据结构

    郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Su ...

  7. cdoj 1355 郭大侠与“有何贵干?”

    题目传送门 郭大侠与"有何贵干?" 连当个值日生也能酷到迷死人,县立学文高中一年二班.这里,有个一入学就引起瞩目的学生,名叫郭大侠.其举手投足都蕴含着一股酷劲,不对,根本酷过头了. ...

  8. cdoj 1342 郭大侠与甲铁城 树状数组+离线

    郭大侠与甲铁城 Time Limit: 1500/800MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit St ...

  9. cdoj 1334 郭大侠与Rabi-Ribi Label:贪心+数据结构

    郭大侠与Rabi-Ribi Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 最近 ...

最新文章

  1. 教你动手推导Self-Attention!(附代码)
  2. SpringCloud导学
  3. 深入理解Redis系列之SpringBoot集成Redis
  4. 04-windows上安装Kibana
  5. Redis 6.0 源码阅读笔记(7) -- ZSet 数据类型源码分析
  6. 【Java6学习笔记】多线程编程中使用volatile保障原子性
  7. 服务器硬盘一直亮红灯怎么回事,请问:电脑的硬盘为何一直亮着红灯?且硬盘很 – 手机爱问...
  8. IMazing for Mac破解版永久激活方法
  9. 北航计算机本科生考研,和计算机考研的师弟师妹们分享一下经验本人本科北航...
  10. 计算机电源如何选配,自己组装电脑时,该怎么选择电源才合适?
  11. 免费比对工具DiffMerge
  12. 在互联网创业公司工作五年是一种怎样的体验?
  13. Mastering Selections in Photoshop CC Photoshop CC选区教程 Lynda课程中文字幕
  14. 2008年10月2号,星期四,晴。不患人之不己知,患不知人也。(孔子)
  15. 自己搭建内网可用的Jrebel License Server激活Jrebel
  16. ChatGPT能接入微信了
  17. oracle万能分页代码,Oracle万能分页法的存储过程
  18. 我们的实践:事理图谱,下一代知识图谱
  19. fopen函数的各种参数 r+ w+ a+ ab+
  20. 安装Bioconductor包和加载DESeq2包的报错问题解决

热门文章

  1. 怎么做安全用电培训PPT课件?
  2. ToolsOhの密码生成器(KT:java、zxcvbn、passay)
  3. EHCI控制器(2)——工作模式
  4. SpringWebFlux
  5. CentOS 8 安装+SSH+Cmatrix过程
  6. Raft 协议 - Fabric
  7. 2021-10-16 NodeJS文件模块面试题
  8. 青菜包子的做法,青菜包子怎么做好吃
  9. 天猫店群玩法解析,适合做天猫店群高利润玩法的类目有哪些?
  10. html 历史项目展示,历史项目列表(含项目进度).html