方法一:树形dp
如果点(i,f[i])建边,得到基环外向树、
相邻两个点不能同时作为杀手,即相邻两个点不能同时取。把环砍掉一条边,变成了树,根据“没有上司的舞会”,定义dp[0][x],表示x不取最大杀手数,dp[1][x]表示x取得最大杀手数。
砍的边(a,b)有三种情况:a,b都不取,a取b不取,a不取b取。
简化情况2中:a一定不取,b随便去不去,b一定不取,a随便去不去。
一定不取的作为根。
方法二:拓扑贪心
如果没有人指证x或者指证x的都是平民,那么x一定可以作为杀手。
如果在环,任选一个作为平民,又变成了链。