#P3874. [TJOI2010] 砍树

[TJOI2010] 砍树

题目背景

小 A 在果园里发现了一棵结满果子的树,于是他就打起了坏主意,他打算把树的一部分砍下来带回家。

题目描述

我们可以把这棵树表示成一个树型的结构,也就是说,任意两个点之间有且仅有一条路径。在每个点 ii 处都结着一个水果,每个水果有一个价值 viv_i 和重量 wiw_i。小 A 想带走树的一部分(或全部),包含至少 KK 个结点(也就是至少 KK 个水果),且这些水果的平均价值尽可能高。平均价值是指水果总的价值除以总的重量。注意小 A 砍下的树必须是在原来的树中连通的一部分。

输入格式

第一行包含两个数 NNKK,分别表示树的结点数和小 A 至少应带走的水果数。

第二行包含空格隔开的 NN 个数,分别表示每个结点处水果的价值 viv_i

第三行包含空格隔开的 NN 个数,分别表示每个水果的重量 wiw_i

按下来 N1N-1 行,每行包含两个数 aia_ibib_i1ai,biN1 \le a_i,b_i \le N),表示在结点 aia_ibib_i 之间有一条边。输入保证是一棵正确的树结构。

输出格式

输出一行,包含一个数,表示最大可能的平均价值。四舍五入到小数点后两位。

3 1
20 10 20
1 1 1
1 2
2 3

20.00
3 2
20 10 20
1 1 1
1 2
2 3

16.67

提示

数据规模与约定

  • 20%20\% 的数据,1N161 \le N \le 16
  • 100%100\% 的数据,1N1001 \le N \le 1001KN1 \le K \le N1vi100001 \le v_i \le 100001wi100001 \le w_i \le 10000