占领城市
题号:NC236758
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Intercept在玩一种游戏,游戏中有 n 座城市,城市之间用单向的道路连接,形式化地说,n 座城市构成了一个有向无环图。Intercept可以控制一些毁灭机器人,对于每一个毁灭机器人,Intercept可以让它从任意一座城市出发,沿着道路以任意的路径移动,在任意一座城市停止。毁灭机器人每经过一座城市,这座城市都会被占领。但是,任意两个毁灭机器人不能经过同一座城市,因为毁灭机器人也会消灭毁灭机器人。Intercept想知道,他至少需要准备多少毁灭机器人,才能占领所有城市。
注意:因为Intercept可以在所有点都设置一个毁灭机器人,所以一定是有解的。

输入描述:

第一行输入两个整数  ,分别表示城市数和道路数。
接下来m行,每行输入两个整数  ,表示从城市 u_i 到城市 v_i 有一条有向道路连接。保证输入是一个有向无环图,且没有重边和自环。

输出描述:

输出一行一个整数,表示Intercept占领所有城市需要的毁灭机器人的最小数目。
示例1

输入

复制
4 3
3 4
1 3
2 3

输出

复制
2