题号:NC21706
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld
题目描述
牛牛有很多的蜡烛,所有的蜡烛燃烧的速度都是一样的,一根长度为L的蜡烛需要L的时间烧尽
如果在蜡烛的两端同时点燃,则蜡烛的燃烧速度会快一倍
现在牛牛将一些蜡烛摆成了一棵树的形状,一开始,牛牛会同时点燃这棵树的一些叶子(即那些度数为1的点)
火焰烧到某个中间节点时,会同时向邻接的蜡烛烧去,在这个过程中军军不会再去点燃新的蜡烛
整棵树燃烧的总时间为所有的蜡烛都烧尽的时间
牛牛想知道一共有多少种可能燃烧的时间
输入描述:
第一行输入一个整数n,表示树的总结点数
第二行输入n-1个整数ai
第三行输入n-1个整数bi
第四行输入n-1个整数ci
表示ai, bi 之间有一条长度为ci的蜡烛
2 ≤ n ≤ 20
0 ≤ ai ≤ n - 1
0 ≤ bi ≤ n - 1
1 ≤ ci ≤ 1000
输出描述:
输出一个整数
示例4
输入
复制
9
0 1 1 2 3 3 2 4
1 2 3 4 5 6 7 8
5 3 2 4 6 8 7 1
备注:
子任务1:n <= 5
子任务2:n <= 10
子任务3:无限制