dp 简单预处理即可。我们设 \(f_{i,j}\) 表示从 \(i\) 到 \(n\) 是否可行,可行的话最前面的区间最大值是多少,第二维只有 \(\sqrt{n}\),所以复杂度是对的。
首先关注边很少,而且数据随机,这提示我们这道题可以乱搞,经过随机可以知道环的个数不会很多,我们把所有的环找出来,删掉一个点,这样整张图变成森林,然后在森林上进行 dp,对于这些删除的点,直接暴力枚举选不选即可。
注意,删点的时候注意删掉了一个点,就更新一下整张图,否则可能会重复删一个环上的点,具体来说,不这样做,一条非树边的两边节点都会被删掉一次,所以删的点数就翻倍了。