P14658 积云四月
题目描述
给定一棵 $n$ 个结点的树,树上第 $i$ 条边连接了结点 $u_i,v_i$,长度是 $l_i$。
本题的树与一般的树有所不同,它是**连续的,意思是每条边实际上可以看成是无穷个连续点的集合,这里我们认为这条边的两个端点也属于这个集合**。
进一步的,我们可以用 $Set(u,v)$ 表示从结点 $u$ 到结点 $v$ 的唯一简单路径上包含的所有边上的集合的并,特别的当 $u=v$ 时 $Set(u,v)$ 就仅包含了 $u$ 这一个点。
给出树上的 $m$ 个点集合 $S_1,S_2\dots S_m$,你要从每个 $S_i$ 里选出一个点 $x_i$,**注意这里的 $x_i$ 可能在某条边上**。
每个 $S_i$ 由如下方式给出:
- 给出 $k_i$ 个结点 $p_{i,1},p_{i,2}\dots p_{i,k_i}$,那么 $S_i=\cup_{1\leq u,v\leq k_i}Set(p_{i,u},p_{i,v})$。
我们称一个**整数** $z$ 合法,当且仅存在一种选择 $x_1,x_2\dots x_m$ 的方式,使得 :
$$D(x_1,x_2)+D(x_2,x_3)+\dots D(x_{m-1},x_m)=z$$
这里的 $D(x,y)$ 定义为两个点在树上的距离。
请你求出有多少种不同的合法的 $z$ 值?
输入格式
第一行一个整数 $n$。
接下来 $n$ 行,每行三个整数 $u_i,v_i,l_i$ 描述了树上的一条边。
接下来一行一个整数 $m$。
接下来 $m$ 行,每行先输入一个正整数 $k_i$ ,接下来 $k_i$ 个正整数表示 $p_{i,1},p_{i,2}\dots p_{i,k_i}$。
输出格式
一行一个整数有多少种不同的合法的 $z$ 值。
说明/提示
- 子任务一 $(5\%)$,$n,\sum k_i\leq 300$。
- 子任务二 $(10\%)$,$n,\sum k_i\leq 5000$。
- 子任务三 $(10\%)$,$\sum k_i\leq 5000$。
- 子任务四 $(15\%)$,树是一条链。
- 子任务五 $(15\%)$,$k_1=1$。
- 子任务六 $(15\%)$,$k_i=2$。
- 子任务七 $(15\%)$,$n,\sum k_i\leq 10^5$。
- 子任务八 $(15\%)$,无特殊限制。
对于 $100\%$ 的数据,$1\leq n\leq 5\times 10^5,\sum k_i\leq 5\times 10^5,1\leq m\leq 5\times 10^5,k_i\geq 1,1\leq l_i\leq 10^9$