比赛场次 | 673 |
---|---|
比赛名称 | 树形数据结构进阶(再进阶) |
比赛状态 | 已结束比赛成绩 |
开始时间 | 2025-04-19 07:30:00 |
结束时间 | 2025-04-19 12:00:00 |
开放分组 | 全部用户 |
注释介绍 | 尽自己能力写,不会写正解打暴力(实际有部分分) |
题目名称 | 谈笑风生 |
---|---|
输入输出 | laugh.in/out |
时间限制 | 3000 ms (3 s) |
内存限制 | 512 MiB |
测试点数 | 20 简单对比 |
用户 | 结果 | 时间 | 内存 | 得分 |
---|---|---|---|---|
|
AATTTTTTTTTTTTTTTTTT |
72.008 s | 16.19 MiB | 10 |
|
WWWWWWWWWWWWWWWWWWWW |
3.018 s | 3.34 MiB | 0 |
【问题描述】
设T 为一棵有根树,我们做如下的定义:
• 设a和b为T 中的两个不同节点。如果a是b的祖先,那么称“a比b不知道高明到哪里去了”。
• 设a 和 b 为 T 中的两个不同节点。如果 a 与 b 在树上的距离不超过某个给定常数x,那么称“a 与b 谈笑风生”。
给定一棵n个节点的有根树T,节点的编号为1 n,根节点为1号节点。你需要回答q 个询问,询问给定两个整数p和k,问有多少个有序三元组(a; b; c)满足:
1. a、b和 c为 T 中三个不同的点,且 a为p 号节点;
2. a和b 都比 c不知道高明到哪里去了;
3. a和b 谈笑风生。这里谈笑风生中的常数为给定的 k。
【输入格式】
输入文件的第一行含有两个正整数n和q,分别代表有根树的点数与询问的个数。接下来n-1行,每行描述一条树上的边。每行含有两个整数u和v,代表在节点u和v之间有一条边。接下来q 行,每行描述一个操作。第i行含有两个整数,分别表示第i个询问的p和k。
【输出格式】
输出 q 行,每行对应一个询问,代表询问的答案。
laugh.in
5 3
1 2
1 3
2 4
4 5
2 2
4 1
2 3
laugh.out
3
1
3
数据范围 n<=300,000吧