310206: CF1799H. Tree Cutting

Memory Limit:512 MB Time Limit:2 S
Judge Style:Text Compare Creator:
Submit:0 Solved:0

Description

Tree Cutting

题目描述

You are given a tree with $ n $ vertices. A hero $ k $ times do the following operation: - Choose some edge. - Remove it. - Take one of the two remaining parts and delete it. - Write the number of vertices in the remaining part. You are given an initial tree and the a sequence of written numbers. Find the number of ways to make operations such that the written numbers are equal to the given numbers. Due to the answer can be big, find it by modulo $ 998\,244\,353 $ . Two ways are considered different, if on some operation edge or remaining part are selected differently.

输入输出格式

输入格式


The first line contains a single integer $ n $ ( $ 2 \leq n \leq 5000 $ ) — the number of vertices. Each of the next $ n-1 $ lines contains two integers $ s $ , $ f $ ( $ 1 \leq s, f \leq n $ , $ s \neq f $ ) — description of edge $ (s, f) $ . Next line contains a single integer $ k $ ( $ 1 \leq k \leq \min{(6, n - 1)} $ ) — the number of operations. Next line contains $ k $ integers $ s_1, s_2, \ldots, s_k $ ( $ n > s_1 > s_2 > \ldots > s_k \geq 1 $ ) — written numbers.

输出格式


Print a single integer — the answer to the problem by modulo $ 998\,244\,353 $ .

输入输出样例

输入样例 #1

3
1 2
2 3
2
2 1

输出样例 #1

4

输入样例 #2

7
2 1
3 2
4 1
5 3
6 4
7 4
2
4 2

输出样例 #2

2

输入样例 #3

7
1 2
1 3
1 4
2 5
3 6
4 7
1
2

输出样例 #3

3

输入样例 #4

7
1 2
1 3
1 4
2 5
3 6
4 7
4
6 5 2 1

输出样例 #4

24

输入样例 #5

8
1 2
2 3
3 4
3 5
3 6
3 7
3 8
2
7 4

输出样例 #5

0

说明

In the first test there are four possible ways to make operations: - Remove the edge $ (1, 2) $ and delete vertex $ 1 $ . Remove the edge $ (2, 3) $ and delete vertex $ 2 $ . - Remove the edge $ (1, 2) $ and delete vertex $ 1 $ . Remove the edge $ (3, 2) $ and delete vertex $ 3 $ . - Remove the edge $ (3, 2) $ and delete vertex $ 3 $ . Remove the edge $ (1, 2) $ and delete vertex $ 1 $ . - Remove the edge $ (3, 2) $ and delete vertex $ 3 $ . Remove the edge $ (2, 1) $ and delete vertex $ 2 $ . In the second test there are two possible ways to make operations: - Remove the edge $ (4, 1) $ and delete the part with vertex $ 4 $ . Remove the edge $ (2, 3) $ and delete the part with vertex $ 2 $ . - Remove the edge $ (4, 1) $ and delete the part with vertex $ 4 $ . Remove the edge $ (3, 2) $ and delete the part with vertex $ 3 $ .

Input

题意翻译

你有一棵 $n$ 个节点的树。英雄需要进行 $k$ 次以下操作:选择其中一条边,删除它,并选择剩下的两个部分中的其中一个进行删除,输出剩余部分中的节点数。你将会得到一颗初始的树和一个序列。你需要找到一种使得序列与所给序列相等的操作方案数量。答案可能较大,请对 $998224353$ 取模。如果边或者剩余部分的选择不同,则将其视为不同的方案。

Output

**题目描述**

给定一棵有 $ n $ 个顶点的树。英雄 $ k $ 次执行以下操作:

- 选择一条边。
- 删除它。
- 删除剩下的两个部分中的一个。
- 记录剩余部分的顶点数。

给定一个初始树和一个记录的数字序列。求进行操作的方式数,使得记录的数字等于给定的数字。由于答案可能很大,请对 $ 998\,244\,353 $ 取模。如果某个操作中选择的边或剩余部分不同,则认为两种方式不同。

**输入输出格式**

**输入格式**

第一行包含一个整数 $ n $ ( $ 2 \leq n \leq 5000 $ ) — 顶点数。

接下来的 $ n-1 $ 行每行包含两个整数 $ s $, $ f $ ( $ 1 \leq s, f \leq n $, $ s \neq f $ ) — 边 $ (s, f) $ 的描述。

接下来一行包含一个整数 $ k $ ( $ 1 \leq k \leq \min{(6, n - 1)} $ ) — 操作次数。

接下来一行包含 $ k $ 个整数 $ s_1, s_2, \ldots, s_k $ ( $ n > s_1 > s_2 > \ldots > s_k \geq 1 $ ) — 记录的数字。

**输出格式**

打印一个整数 — 问题的答案对 $ 998\,244\,353 $ 取模。

**输入输出样例**

**输入样例 #1**
```
3
1 2
2 3
2
2 1
```
**输出样例 #1**
```
4
```

**输入样例 #2**
```
7
2 1
3 2
4 1
5 3
6 4
7 4
2
4 2
```
**输出样例 #2**
```
2
```

**输入样例 #3**
```
7
1 2
1 3
1 4
2 5
3 6
4 7
1
2
```
**输出样例 #3**
```
3
```

**输入样例 #4**
```
7
1 2
1 3
1 4
2 5
3 6
4 7
4
6 5 2 1
```
**输出样例 #4**
```
24
```

**输入样例 #5**
```
8
1 2
2 3
3 4
3 5
3 6
3 7
3 8
2
7 4
```
**输出样例 #5**
```
0
```

**说明**

第一个测试有四种可能的操作方式。

- 删除边 $ (1, 2) $ 并删除顶点 $ 1 $ 。删除边 $ (2, 3) $ 并删除顶点 $ 2 $ 。
- 删除边 $ (1, 2) $ 并删除顶点 $ 1 $ 。删除边 $ (3, 2) $ 并删除顶点 $ 3 $ 。
- 删除边 $ (3, 2) $ 并删除顶点 $ 3 $ 。删除边 $ (1, 2) $ 并删除顶点 $ 1 $ 。
- 删除边 $ (3, 2) $ 并删除顶点 $ 3 $ 。删除边 $ (2, 1) $ 并删除顶点 $ 2 $ 。

第二个测试有两种可能的操作方式。

- 删除边 $ (4, 1) $ 并删除包含顶点 $ 4 $ 的部分。删除边 $ (2, 3) $ 并删除包含顶点 $ 2 $ 的部分。
- 删除边 $ (4, 1) $ 并删除包含顶点 $ 4 $ 的部分。删除边 $ (3, 2) $ 并删除包含顶点 $ 3 $ 的部分。**题目描述** 给定一棵有 $ n $ 个顶点的树。英雄 $ k $ 次执行以下操作: - 选择一条边。 - 删除它。 - 删除剩下的两个部分中的一个。 - 记录剩余部分的顶点数。 给定一个初始树和一个记录的数字序列。求进行操作的方式数,使得记录的数字等于给定的数字。由于答案可能很大,请对 $ 998\,244\,353 $ 取模。如果某个操作中选择的边或剩余部分不同,则认为两种方式不同。 **输入输出格式** **输入格式** 第一行包含一个整数 $ n $ ( $ 2 \leq n \leq 5000 $ ) — 顶点数。 接下来的 $ n-1 $ 行每行包含两个整数 $ s $, $ f $ ( $ 1 \leq s, f \leq n $, $ s \neq f $ ) — 边 $ (s, f) $ 的描述。 接下来一行包含一个整数 $ k $ ( $ 1 \leq k \leq \min{(6, n - 1)} $ ) — 操作次数。 接下来一行包含 $ k $ 个整数 $ s_1, s_2, \ldots, s_k $ ( $ n > s_1 > s_2 > \ldots > s_k \geq 1 $ ) — 记录的数字。 **输出格式** 打印一个整数 — 问题的答案对 $ 998\,244\,353 $ 取模。 **输入输出样例** **输入样例 #1** ``` 3 1 2 2 3 2 2 1 ``` **输出样例 #1** ``` 4 ``` **输入样例 #2** ``` 7 2 1 3 2 4 1 5 3 6 4 7 4 2 4 2 ``` **输出样例 #2** ``` 2 ``` **输入样例 #3** ``` 7 1 2 1 3 1 4 2 5 3 6 4 7 1 2 ``` **输出样例 #3** ``` 3 ``` **输入样例 #4** ``` 7 1 2 1 3 1 4 2 5 3 6 4 7 4 6 5 2 1 ``` **输出样例 #4** ``` 24 ``` **输入样例 #5** ``` 8 1 2 2 3 3 4 3 5 3 6 3 7 3 8 2 7 4 ``` **输出样例 #5** ``` 0 ``` **说明** 第一个测试有四种可能的操作方式。 - 删除边 $ (1, 2) $ 并删除顶点 $ 1 $ 。删除边 $ (2, 3) $ 并删除顶点 $ 2 $ 。 - 删除边 $ (1, 2) $ 并删除顶点 $ 1 $ 。删除边 $ (3, 2) $ 并删除顶点 $ 3 $ 。 - 删除边 $ (3, 2) $ 并删除顶点 $ 3 $ 。删除边 $ (1, 2) $ 并删除顶点 $ 1 $ 。 - 删除边 $ (3, 2) $ 并删除顶点 $ 3 $ 。删除边 $ (2, 1) $ 并删除顶点 $ 2 $ 。 第二个测试有两种可能的操作方式。 - 删除边 $ (4, 1) $ 并删除包含顶点 $ 4 $ 的部分。删除边 $ (2, 3) $ 并删除包含顶点 $ 2 $ 的部分。 - 删除边 $ (4, 1) $ 并删除包含顶点 $ 4 $ 的部分。删除边 $ (3, 2) $ 并删除包含顶点 $ 3 $ 的部分。

加入题单

算法标签: