A16011 | Apple Tree
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
Timofey has an apple tree growing in his garden; it is a rooted tree of $n$ vertices with the root in vertex $1$ (the vertices are numbered from $1$ to $n$ ). A tree is a connected graph without loops and multiple edges.
This tree is very unusual — it grows with its root upwards. However, it's quite normal for programmer's trees.
The apple tree is quite young, so only two apples will grow on it. Apples will grow in certain vertices (these vertices may be the same). After the apples grow, Timofey starts shaking the apple tree until the apples fall. Each time Timofey shakes the apple tree, the following happens to each of the apples:
Let the apple now be at vertex $u$ .
- If a vertex $u$ has a child, the apple moves to it (if there are several such vertices, the apple can move to any of them).
- Otherwise, the apple falls from the tree.
It can be shown that after a finite time, both apples will fall from the tree.
Timofey has $q$ assumptions in which vertices apples can grow. He assumes that apples can grow in vertices $x$ and $y$ , and wants to know the number of pairs of vertices ( $a$ , $b$ ) from which apples can fall from the tree, where $a$ — the vertex from which an apple from vertex $x$ will fall, $b$ — the vertex from which an apple from vertex $y$ will fall. Help him do this.
This tree is very unusual — it grows with its root upwards. However, it's quite normal for programmer's trees.
The apple tree is quite young, so only two apples will grow on it. Apples will grow in certain vertices (these vertices may be the same). After the apples grow, Timofey starts shaking the apple tree until the apples fall. Each time Timofey shakes the apple tree, the following happens to each of the apples:
Let the apple now be at vertex $u$ .
- If a vertex $u$ has a child, the apple moves to it (if there are several such vertices, the apple can move to any of them).
- Otherwise, the apple falls from the tree.
It can be shown that after a finite time, both apples will fall from the tree.
Timofey has $q$ assumptions in which vertices apples can grow. He assumes that apples can grow in vertices $x$ and $y$ , and wants to know the number of pairs of vertices ( $a$ , $b$ ) from which apples can fall from the tree, where $a$ — the vertex from which an apple from vertex $x$ will fall, $b$ — the vertex from which an apple from vertex $y$ will fall. Help him do this.
输入格式
The first line contains integer $t$ ( $1 \leq t \leq 10^4$ ) — the number of test cases.
The first line of each test case contains integer $n$ ( $2 \leq n \leq 2 \cdot 10^5$ ) — the number of vertices in the tree.
Then there are $n - 1$ lines describing the tree. In line $i$ there are two integers $u_i$ and $v_i$ ( $1 \leq u_i, v_i \leq n$ , $u_i \ne v_i$ ) — edge in tree.
The next line contains a single integer $q$ ( $1 \leq q \leq 2 \cdot 10^5$ ) — the number of Timofey's assumptions.
Each of the next $q$ lines contains two integers $x_i$ and $y_i$ ( $1 \leq x_i, y_i \leq n$ ) — the supposed vertices on which the apples will grow for the assumption $i$ .
It is guaranteed that the sum of $n$ does not exceed $2 \cdot 10^5$ . Similarly, It is guaranteed that the sum of $q$ does not exceed $2 \cdot 10^5$ .
The first line of each test case contains integer $n$ ( $2 \leq n \leq 2 \cdot 10^5$ ) — the number of vertices in the tree.
Then there are $n - 1$ lines describing the tree. In line $i$ there are two integers $u_i$ and $v_i$ ( $1 \leq u_i, v_i \leq n$ , $u_i \ne v_i$ ) — edge in tree.
The next line contains a single integer $q$ ( $1 \leq q \leq 2 \cdot 10^5$ ) — the number of Timofey's assumptions.
Each of the next $q$ lines contains two integers $x_i$ and $y_i$ ( $1 \leq x_i, y_i \leq n$ ) — the supposed vertices on which the apples will grow for the assumption $i$ .
It is guaranteed that the sum of $n$ does not exceed $2 \cdot 10^5$ . Similarly, It is guaranteed that the sum of $q$ does not exceed $2 \cdot 10^5$ .
输出格式
For each Timofey's assumption output the number of ordered pairs of vertices from which apples can fall from the tree if the assumption is true on a separate line.
输入输出样例
输入 #1
2 5 1 2 3 4 5 3 3 2 4 3 4 5 1 4 4 1 3 3 1 2 1 3 3 1 1 2 3 3 1
输出 #1
2 2 1 4 4 1 2
输入 #2
2 5 5 1 1 2 2 3 4 3 2 5 5 5 1 5 3 2 5 3 2 1 4 2 3 4 3 2 1 4 2
输出 #2
1 2 1 4 2
In the first example:
- For the first assumption, there are two possible pairs of vertices from which apples can fall from the tree: $(4, 4), (5, 4)$ .
- For the second assumption there are also two pairs: $(5, 4), (5, 5)$ .
- For the third assumption there is only one pair: $(4, 4)$ .
- For the fourth assumption, there are $4$ pairs: $(4, 4), (4, 5), (5, 4), (5, 5)$ .
 Tree from the first example.For the second example, there are $4$ of possible pairs of vertices from which apples can fall: $(2, 3), (2, 2), (3, 2), (3, 3)$ . For the second assumption, there is only one possible pair: $(2, 3)$ . For the third assumption, there are two pairs: $(3, 2), (3, 3)$ .
- For the first assumption, there are two possible pairs of vertices from which apples can fall from the tree: $(4, 4), (5, 4)$ .
- For the second assumption there are also two pairs: $(5, 4), (5, 5)$ .
- For the third assumption there is only one pair: $(4, 4)$ .
- For the fourth assumption, there are $4$ pairs: $(4, 4), (4, 5), (5, 4), (5, 5)$ .
 Tree from the first example.For the second example, there are $4$ of possible pairs of vertices from which apples can fall: $(2, 3), (2, 2), (3, 2), (3, 3)$ . For the second assumption, there is only one possible pair: $(2, 3)$ . For the third assumption, there are two pairs: $(3, 2), (3, 3)$ .
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?
提交通过
评测结果:Accepted