你是一位活跃在历史幕后的特工,每天都在为世界和平而奔走。这个世界有 $N$ 个国家,分别编号为 1 到 $N$。你的目标是在这些国家之间建立尽可能友好的关系。为了规划你的工作,你绘制了一张表示当前国际关系的图。
你准备了一张大画纸,首先在上面点出了代表各个国家的 $N$ 个点。接着,为了表示当前的国际关系,你画了 $M$ 条连接两个国家的箭头。从代表国家 $a$ 的点指向代表国家 $b$ 的点的箭头,表示“目前,国家 $a$ 向国家 $b$ 派遣了大使”。以下将从代表国家 $a$ 的点指向代表国家 $b$ 的点的箭头称为箭头 $(a, b)$。这样绘制出的 $N$ 个点和 $M$ 条箭头就是表示当前国际关系的图。
作为国家间友好关系的契机,我们来考虑举行两国间的友好条约缔结会议(以下简称“会议”)。若两个国家 $p, q$ 要举行会议,需要有一个同时向这两个国家派遣了大使的国家 $x$ 作为中介。会议举行后,两国会向对方国家派遣大使。也就是说,国家 $p$ 和国家 $q$ 要举行会议,必须存在一个国家 $x$,使得箭头 $(x, p)$ 和箭头 $(x, q)$ 均已存在;会议举行后,会新增箭头 $(p, q)$ 和箭头 $(q, p)$。但如果箭头已经存在,则不会重复添加。
你的工作是选择可以举行会议的两个国家以及作为会议中介的国家,并促成会议。在利用图进行这项工作的模拟时,我们决定以画纸上箭头的总数作为衡量世界和平程度的基准。也就是说,通过不断选择两个国家并促成会议,你想要知道画纸上箭头的总数最多能达到多少。
题目描述
给定这个世界中国家的数量以及表示当前国际关系的信息,请编写一个程序,计算通过不断选择两个国家并促成会议,画纸上箭头的总数最多能达到多少。
输入格式
从标准输入读取以下内容:
- 第 1 行包含两个整数 $N, M$,以空格分隔。$N$ 表示画纸上点的个数(即世界中国家的数量),$M$ 表示画纸上箭头的个数。
- 接下来的 $M$ 行,每行包含画纸上箭头的相关信息。其中第 $i$ 行 ($1 \le i \le M$) 包含两个整数 $A_i, B_i$,以空格分隔。这表示画纸上存在从代表国家 $A_i$ 的点指向代表国家 $B_i$ 的点的箭头,即国家 $A_i$ 向国家 $B_i$ 派遣了大使。
输出格式
在标准输出中,输出一行,表示能够实现的箭头总数的最大值。请注意,箭头的总数不仅要包含会议后新添加的箭头,还要包含当前已经存在的箭头。
数据范围
所有输入数据满足以下条件:
- $1 \le N \le 100\,000$
- $0 \le M \le 200\,000$
- $1 \le A_i \le N$ ($1 \le i \le M$)
- $1 \le B_i \le N$ ($1 \le i \le M$)
- $A_i \neq B_i$ ($1 \le i \le M$)
- $(A_i, B_i) \neq (A_j, B_j)$ ($1 \le i < j \le M$)
子任务
子任务 1 [5 分]
- 满足 $N \le 100$。
子任务 2 [30 分]
- 满足 $N \le 5\,000$。
子任务 3 [65 分]
- 没有额外限制。
样例
输入样例 1
5 4 1 2 1 3 4 3 4 5
输出样例 1
10
说明
例如,可以通过以下步骤实现 10 条箭头:
- 以国家 1 为中介,国家 2 和国家 3 举行会议。
- 以国家 4 为中介,国家 3 和国家 5 举行会议。
- 以国家 3 为中介,国家 2 和国家 5 举行会议。