CF494D Birthday

题目描述

Ali 是 Hamed 的弟弟,明天是他的生日。Hamed 想让弟弟配得上他的礼物,于是给了他一个很难的编程题,并告诉他说如果他能成功解决,就会送给他一台全新的笔记本电脑。Ali 还不是像 Hamed 那样有天赋的程序员,虽然他通常不会作弊,但这次为了笔记本电脑破了例。所以他决定偷偷向你寻求帮助。请你帮 Ali 解决这个问题。 给定一个有 $n$ 个顶点的有权有根树,顶点 $1$ 是树的根。我们定义 $d(u,v)$ 为顶点 $u$ 和 $v$ 之间最短路径上所有边权之和。具体地,$d(u,u)=0$。我们还为每个顶点 $v$ 定义 $S(v)$,它是满足 $d(1,u) = d(1,v) + d(v,u)$ 的所有顶点 $u$ 组成的集合。函数 $f(u,v)$ 定义如下公式: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF494D/a49e19fad915afd07784c02308a91dfcb85750c8.png) 你的任务是对于给定的 $q$ 组顶点对,计算每组的 $f(u,v)$。由于答案可能很大,只需要输出结果对 $10^{9}+7$ 取模后的值。

输入格式

第一行为一个整数 $n$,表示树的节点数。 接下来的 $n-1$ 行,每行包含三个整数 $a, b, w$,表示树中有一条连接 $a$ 和 $b$ 的边,权值为 $w$。 接下来一行包含一个整数 $q$,表示询问的数量。 之后的 $q$ 行,每行包含两个整数 $u, v$,表示一组要计算的顶点对。

输出格式

输出 $q$ 行,每行一个整数,对应每组 $u, v$ 的 $f(u,v)$ 的值。答案均需对 $10^9+7$ 取模。

说明/提示

无。 由 ChatGPT 5 翻译