#CF3717. 删除有向边

删除有向边

题目描述

你有一个由 nn 个顶点和 mm 条边组成的有向无环图,顶点从 11nn 编号,没有重边和自环。

invin_v 为顶点 vv 的入度(指向v的边的数量),outvout_v 为顶点 vv 的出度(从 vv 出发的边的数量)。

你需要从图中移除一些边。令新的入度和出度为 invin^′_voutvout^′_v

删除一定数量的边后,每个顶点 vv 都满足以下条件:

  • inv<invin^′_v < in_v 或者 inv=inv=0in^′_v=in_v=0
  • outv<outvout^′_v < out_v 或者 outv=outv=0out^′_v=out_v=0

如果对于集合 SS 中的每对顶点 vvu(vuvSuS)u(v≠u,v∈S,u∈S),在未被移除的边上存在一条从 vvuu 或从 uuvv 的路径,则将其称为 cute 集合。

从图中删除一些边,这样所有顶点的入度和出度要么减少,要么保持为 0 ,在此条件下,cute 集合 SS 的最大可能大小是多少?

说直白点,就是:

  • 每个点至少删除一条出边,除非他没有出边;
  • 每个点至少删除一条入边,除非他没有入边;

求经过上述删除之后,最大的单连通子集。

输入格式

给定一个有向无环图,包含 nn 个节点和 mm 条边。

第一行包含两个整数 nnm(1n21050m2105)m(1≤n≤2⋅10^5;0≤m≤2⋅10^5)——图的顶点数和边数。

接下来的 mm 行,每行包含两个整数 vvu(1v,unvu)u(1≤v,u≤n;v≠u),表示一个边的描述。

给定的边构成一个有效的有向无环图。没有多重边。

输出格式

输出一个整数,表示在从图中删除某些边并且所有顶点的入度和出度要么减少要么保持为 00 的情况下,cute 集合 SS 的最大可能大小。

测试样例

3 3
1 2
2 3
1 3
2
5 0
1
7 8
7 1
1 3
6 2
2 3
7 2
2 4
7 3
6 3
3

样例说明

在第一个例子中,in=[0,1,2]out=[2,1,0]in=[0,1,2],out=[2,1,0]。您可以删除边 (1,2)(1,2)(2,3)(2,3)in=[0,0,1]out=[1,0,0]in^′=[0,0,1],out^′=[1,0,0]。您可以看到对于所有的 vv 条件都成立。最大的 cuteSS 由顶点 13 组成。它们仍然通过一条边直接连接,因此它们之间有一条路径。

在第二个例子中,没有边。由于所有的 invin_voutvout_v 都等于 0,因此允许保留边数为零的图。有 55cute 集合,每个都包含一个单独的顶点。因此,最大大小为 11

在第三个例子中,您可以删除边 (7,1)(2,4)(1,3)(7,1),(2,4),(1,3)(6,2)(6,2)。最大的 cute 集将是 S=7,3,2S={7,3,2}。您也可以删除边 (7,3)(7,3),答案不会改变。

以下是第三个例子的图像:

image

提示

本题可以先考虑:如果不需要删除边可以怎么做。