Tarjan种了树并背着包爬树?什么鬼qwq。
传送门
题解
对于这题,如果直接按照软件之间的依赖关系建图的话,将会建出来一棵基环树森林,并不好搞。
然后不难发现,对于一个环上的软件,要么全部安装,要么全部不装。
所以就可以愉快地缩点了。
缩完点之后,原图就变成了一片森林。
为了方便,可以再新建一个超级根,把所有根都连到超级根上。
然后树形DP,爬到树上背个包即可。
代码
1 |
|
Tarjan种了树并背着包爬树?什么鬼qwq。
对于这题,如果直接按照软件之间的依赖关系建图的话,将会建出来一棵基环树森林,并不好搞。
然后不难发现,对于一个环上的软件,要么全部安装,要么全部不装。
所以就可以愉快地缩点了。
缩完点之后,原图就变成了一片森林。
为了方便,可以再新建一个超级根,把所有根都连到超级根上。
然后树形DP,爬到树上背个包即可。
1 | #include<cstdio> |