#SZSY1019. 路径片段计数

路径片段计数

题目描述

有一棵包含 nn 个点的树,点的编号为 1,2,…,n1,2,\ldots,n。另给出一个 11 到 nn 的排列 p1,p2,…,pnp_1,p_2,\ldots,p_n。

对于排列中的一个非空连续片段 pl,pl+1,…,prp_l,p_{l+1},\ldots,p_r,取出这些点以及原树中两端都在这些点内的边,得到这个点集在原树上的诱导子图。

如果该诱导子图连通,且其中每个点的度数都不超过 22,那么它是一条简单路径,称这个连续片段为合法片段。特别地,只包含一个点的片段也合法。

求合法片段的数量。

输入格式

第一行一个整数 nn。

接下来 n−1n-1 行,每行两个整数 u,vu,v,表示树中有一条连接点 uu 与点 vv 的边。

最后一行 nn 个整数 p1,p2,…,pnp_1,p_2,\ldots,p_n,表示给定的排列。

输出格式

输出一个整数,表示合法片段的数量。

数据范围

对于所有测试数据:

  • 1≤n≤2×1051\le n\le 2\times 10^5;
  • 输入的 n−1n-1 条边构成一棵树;
  • pp 是 11 到 nn 的一个排列。

子任务

编号 分值 缩减范围 附加限制
1–7 35 n≤3000n\le 3000 —
8–9 10 — 对所有 1≤i<n1\le i<n,树中都有边 (pi,pi+1)(p_i,p_{i+1})。
10–12 15 树中每个点的度数都不超过 22。
13–16 20 树中每个点的度数都不超过 33。
17–20 —

样例 1

5
1 2
1 3
1 4
4 5
2 1 3 4 5
11

样例 1 说明

长度为 11 的 55 个片段都合法;长度为 22、33、44 的合法片段分别有 33、22、11 个。完整片段中点 11 的诱导度数为 33,因此不合法。总数为 5+3+2+1=115+3+2+1=11。