这启发我们,如果我们能够将
n
n
n个点分成三个集合
A
,
B
,
C
A,B,C
A,B,C,
A
A
A连向
B
B
B,
B
B
B连向
C
C
C,那么由于
2
∣
A
∣
≥
∣
B
∣
,
2
∣
B
∣
≥
∣
C
∣
2|A|\ge|B|,2|B|\ge|C|
2∣A∣≥∣B∣,2∣B∣≥∣C∣,
C
≤
4
7
n
C\le\frac{4}{7}n
C≤74n,只需要删掉
C
C
C就好了。
要求是
A
,
B
A,B
A,B内部没有边。
实际上我们一开始就可以想到一个很naive的想法,每隔
3
3
3个删一个点,看起来会有很多点重复,不好计算,但实际上我们只需要它们可以分成
3
3
3层,前一个集合向后一个集合连边,这样我们就可以保证集合
C
C
C的点数了。
不妨按照拓扑序(也就是
1
1
1到
n
n
n)做,如果一个点入度有
A
A
A但没有
B
B
B,那么它就是
B
B
B,入度有
B
B
B那么它就是
C
C
C,否则只有
C
C
C或没有入度它就是
A
A
A。