编程题
### 问题描述 在现代社会中,网络已经成为人们生活和工作的重要组成部分。然而,与网络的普及和发展相伴而来的是网络安全问题的不断涌现。其中,网络病毒的传播是一种常见而且具有挑战性的问题。网络病毒是指通过网络进行传播的恶意软件,它可以在感染的计算机上破坏数据、盗取个人信息,甚至控制整个网络。 为了应对网络病毒的传播,研究人员需要了解病毒在网络中的传播路径和传播速度。为了模拟网络病毒的传播过程,我们可以使用有向图来表示网络结构。图中的每个节点代表一个计算机,边表示计算机之间的连接关系。每个节点上的权重表示该计算机的脆弱程度,即容易受到网络病毒的感染程度。 为了阻止网络病毒的传播,我们需要在每轮中选择一些节点,并删去这些节点,要求这些节点满足:不存在两个不同的节点 $i$ 和 $j$ ,满足可以通过有向边从节点 $i$ 到节点 $j$ 。 求最少需要多少轮才能取走所有的点。 ### 输入格式 第一行两个整数 $n,m$ 。 接下来 $m$ 行每行两个整数 $a,b$ 表示一条从 $a$ 连向 $b$ 的单向边。 ### 输出格式 一行输出一个整数表示答案。 ### 输入样例 ```plaintext 5 4 1 2 2 3 3 1 4 5 ``` ### 输出样例 ```plaintext 3 ``` ### 数据范围 对于 $40\\%$ 的数据, $1 \le n,m \le 10^3$ 。 对于另外 $30\\%$ 的数据,保证无环。 对于 $100\\%$ 的数据, $1 \le n,m \le 10^5$ 。
查看答案
赣ICP备20007335号-2