题意:
n 个点 maxtime的时间
下面给定一棵树及走过该边需要的时间
最后一行给定 每个点的宝藏价值
问在maxtime时间内能否 从 1->n ,若能输出最多能获得的宝藏价值
思路:
对于树,除了1->n的路径, 若去其他点则要走回头路
所以我们可以先走到终点, 最后时间 - 1-n路径花费的时间, 再把该路径的边花费改为0
这样就是 剩下时间 ,走非路径上点 能获得的最高价值,就是背包问题
dp[i][j] 表示 i 点用了 j 时刻能获得的最大价值
先用spfa跑出1-n的路径,再修改路径上的边权, 树形背包一下 结果就是 dp[1][maxtime]
#include
#include
#include
#include
#include
#include
#include