拯救DAG王国
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

DAG国是一个由n个城市,m单向 道路组成的王国,更有趣的是,人们从任意一个城市出发,沿着单向道路行走,都无法回到原来的城市。

目前,DAG正在被邻国攻击,DAG国王下令军队守护住重要的几座城市,来维持这个DAG国交通的运作。

重要城市的定义:
  • 对于城市u,如果任选一个城市,都存在uv之间的路径或者vu之间的路径。则城市u属于重要城市,记为双一流A类城市
  • 对于城市u,如果它不属于双一流A类城市,但如果我们去掉其余某一个城市,使得在剩余的城市中任选一个城市,都存在uv之间的路径或者vu之间的路径。则城市u也属于重要城市,记为双一流B类城市

现在,军队要求你统计一下重要城市的数量(包括A类与B类)。

输入描述:

第一行包括两个整数n,m,分别表示城市的数目和单向道路的数目。

接下来的m行来描述每条单向道路,每行由两个整数u, v构成,表示一条从u号城市到v号城市的单向路径。

输入保证没有重复的边。

输出描述:

输出一个整数,为重要城市的个数(包括A类与B类)。
示例1

输入

复制
7 7
1 2
2 3
3 4
4 7
2 5
5 4
6 4

输出

复制
4
示例2

输入

复制
6 7
1 2
2 3
3 4
1 5
5 3
2 6
6 4

输出

复制
4

备注: