Description
$Z$国有$N$个骑士,每个骑士有一个战斗力和一个讨厌的骑士(不会讨厌自己)。
骑士按$1$至$N$编号。
现在要选出一些骑士组成一个骑士团,要求骑士团内的每个骑士所讨厌的骑士都不在骑士团内。求:满足条件的骑士团的最大战斗力和是多少?
Input
第一行:一个数$N$,表示骑士数。
接下来$N$行:每行两个整数,分别表示当前骑士的战斗力和他讨厌的骑士的编号
Output
一个整数:表示最大战斗力和。
Solution
$A$讨厌$B$,则$AB$不能同时入选,等价于$B$讨厌$A$,所以应该是无向边。
一共有$N$个点$N$条边,很明显就是环套树。同一条边上的点不能同时入选,求最大和,显然用树形DP。
深搜一遍,发现环时就把环上的随便一条边拆掉,假设被拆掉的边的两个点分别为$u$和$v$,就在$u$和$v$上分别做树形DP。显然$u$和$v$不能同时选,所以比较一下两点中其中一个不取时的最大战斗力和,比较得出答案。
Code
|
|