题目描述
万圣节那天,小Q想去邻居要糖果,玩下“Trick or Treat”。小Q家和邻居家够成一棵树,即邻居间可以相互到达,并且只有一种方案。小Q的妈妈将在m分钟后回来,如果发现小Q不在家会很生气。小Q希望获得最多的糖果,并且在m分钟内回到家中。现在告诉你每条路要花的时间,并假设小Q到了邻居家后就能拿到糖果,不需要花时间,当然每个邻居只会给一次糖果,以后经过的时候,就不再给了。请你帮她算算,她最多能拿到多少糖果。
输入
输入数据一行,一个正数n表示小Q所在的敌方有多少户人家。
接下一行n个数,表示每户人家给她的糖数vali。
接下来n-1,每行三个数,a, b, c,表示通过连接编号为a, b的人家的路要花费c分钟的时间,1<=a, b<=n。
最后一行,两个整数k, m,k表示小Q家的编号(小Q也能从自己家获得糖果),m表示妈妈m分钟后回家。
输出
输出一个整数表示小Q能获得最多糖果数量。
样例输入
2
1 3
2 1 1
2 1
样例输出
3
输入:
2
3 3
1 2 1
2 2
输出:
6
样例一解释:小Q只能获得自己家的糖果,不能在m分钟去其他的地方再赶回来。
样例二解释:小Q能获得自己家的糖果和编号为1邻居家的糖果,并恰好在m分钟赶回家中。
对于30%的数据1<=n<=10;
对于100%的数据,1<=n<=100,1<=m<=200 ,0<=vali <=1000,1<=c<=10;
树形背包
f[i][j]

这篇博客讲述了在万圣节小Q如何在限定时间内通过一棵树状结构的邻里关系网络,规划路线以获取最多糖果的问题。小Q的目标是在妈妈回来前获得最多的糖果,并准时回家。输入包括邻居数量、糖果数、路线时间和小Q家的编号及妈妈回家时间。通过树形背包算法解决此问题,给出示例解释了策略和输出结果。
最低0.47元/天 解锁文章
3443

被折叠的 条评论
为什么被折叠?



