SP25336 NPC2015C - Eefun Plays Doto
题目描述
Doto 是一款著名的游戏。在这款游戏中,每位玩家控制 $N$ 个英雄,每个英雄都有无限量的技能可以用来增强其他英雄。Eefun 正在操控他的 $N$ 个英雄,这些英雄的编号从 $1$ 到 $N$。
虽然游戏的主要目标是用这些英雄击败敌人,但 Eefun 总是输。所以他现在只想试着让他的英雄变得更强大。
根据 Eefun 的想法,他要让所有的英雄变得强大需要满足 $M$ 个条件。每个条件涉及两个英雄,分别是 $A$ 和 $B$。为满足条件,英雄 $A$ 必须对英雄 $B$ 使用他的技能,以增强 $B$ 的力量。此外,如果英雄 $B$ 和 $C$ 都需要来自英雄 $A$ 的技能,英雄 $A$ 可以首先增强英雄 $B$,然后 $B$ 再用获得的技能去增强英雄 $C$。在这种情况下,激活的技能数量是 $2$,其中英雄 $A$ 没有获得任何技能,英雄 $B$ 获得了来自英雄 $A$ 的技能,而英雄 $C$ 同时得到了来自英雄 $A$ 和 $B$ 的技能。
技能的传递是连续的,因此如果英雄 $A$ 把技能传给英雄 $B$,英雄 $B$ 再传给英雄 $C$,而英雄 $C$ 又传给英雄 $A$,那么每个英雄都会最终获得其他所有英雄的技能。
现在 Eefun 很想知道,完成所有这些条件,最少需要激活多少次技能。
输入格式
第一行包含两个整数 $N$ 和 $M$,分别表示英雄的数量和条件的数量。
接下来的 $M$ 行中,每行包含两个整数 $A$ 和 $B$,表示英雄 $B$ 因获得了来自英雄 $A$ 的技能而变得更强。
输出格式
输出一个整数,表示完成所有条件所需激活的最少技能次数。
说明/提示
$$1 \le N, M \le 10^5$$
**本翻译由 AI 自动生成**