luogu#P9669. [ICPC2022 Jinan R] DFS Order 2
[ICPC2022 Jinan R] DFS Order 2
题目描述
Prof. Pang has a rooted tree that is rooted at vertex and has nodes. These nodes are numbered from to .
Now he wants to start the depth-first search at the root. He wonders for each node , how many ways it can appear in the -th position of . The depth-first search order is the order of nodes visited during the depth-first search. A node appears in the -th () position in this order means it is visited after other nodes. Because sons of a node can be iterated in arbitrary order, multiple possible depth-first orders exist.
Prof. Pang wants to know for each node , how many different s such that appears in the -th position. For each , compute the answer. Because the answer can be very large, output it modulo .
Following is a pseudo-code for the depth-first search on a rooted tree. After calling (), is the depth-first search order.
输入格式
The first line contains one integer , the number of vertices in the tree.
Each of the next lines describes an edge of the tree. Edge is denoted by two integers and , the labels of vertices it connects .
It is guaranteed that the given edges form a tree.
输出格式
For each vertex from to , output one line containing integers modulo . The -th integer in the -th line should be the number of different depth-first search orders such that appears in the -th position.
题目大意
题目描述
P有一棵树,根节点是,总共有个节点,从到编号。
他想从根节点开始进行深度优先搜索。他想知道对于每个节点,在深度优先搜索中,它出现在第个位置的方式有多少种。深度优先搜索的顺序是在搜索过程中访问节点的顺序。节点出现在第)个位置表示它在访问了个其他节点之后才被访问。因为节点的子节点可以以任意顺序访问,所以有多种可能的深度优先搜索顺序。
P想知道对于每个节点,有多少种不同的深度优先搜索顺序,使得出现在第个位置。对于每个和,计算答案。答案可能很大,所以输出时要取模。以下是深度优先搜索的伪代码,用于处理树。在调用函数后, dfs_order将会包含深度优先搜索的顺序。
算法 深度优先搜索的实现
1. 过程 DFS(节点 x)
2. 将x添加到dfs_order的末尾
3. 对于x的每个子节点y do ·子节点可以以任意顺序遍历。
4. DFS(y)
5. 结束循环
6. 结束过程
7. 过程 MAIN()
8. 将dfs_order设为全局变量
9. dfs_order ← 空列表
10. DFS(1)
11. 结束过程
输入格式
第一行包含一个整数,表示树中的节点数量。
接下来的n-1行描述了树的边。第i行包含两个整数和,表示连接的两个节点的标签。
保证给定的边构成一棵树。
输出格式
对于每个从到的节点,输出一行,包含个整数,取模。在第行中,第个整数表示不同的深度优先搜索顺序中,节点出现在第个位置的数量。
翻译由@ayf2192538031提供
5
1 2
1 3
3 4
3 5
4 0 0 0 0
0 2 0 0 2
0 2 2 0 0
0 0 1 2 1
0 0 1 2 1