P14423 [JOISC 2014] 有趣的交朋友 / Making Friends is Fun
题目描述
你是活跃于历史幕后的一名特工,日复一日地为世界和平而行动。这个世界共有 $N$ 个国家,分别被赋予从 $1$ 到 $N$ 的不同编号。你的目标是在这些国家之间尽可能多地建立友好的关系。
为了制定特工任务的计划,你绘制了一张表示当前国际关系的图。你准备了一张大画纸,首先在上面标出 $N$ 个点,分别代表这 $N$ 个国家。接着,为了表示当前的国际关系,你画了 $M$ 条箭头,每条箭头连接两个国家。从代表国家 $a$ 的点指向代表国家 $b$ 的点的箭头,表示“当前,国家 $a$ 向国家 $b$ 派遣了大使”。以下,我们将从国家 $a$ 指向国家 $b$ 的箭头称为**箭头 $(a, b)$**。这样,由 $N$ 个点和 $M$ 条箭头构成的图,即表示当前的国际关系。
作为促进国家间友好关系的举措,考虑举行两国之间的友好条约缔结会议(以下简称为“**会议**”)。为了让两个国家 $p$ 和 $q$ 举行会议,必须存在一个国家 $x$ 作为中介,即国家 $x$ 向 $p$ 和 $q$ 两国都派遣了大使。举行会议后,两国将互相派遣大使,也就是说,必须添加新的箭头 $(p, q)$ 和 $(q, p)$。但若这些箭头已经存在,则无需重复添加。
你的任务是:选择能够举行会议的两个国家,以及作为会议中介的国家,使会议得以举行。为了模拟这一过程,我们将以画纸上箭头的总数作为衡量世界和平程度的标准。也就是说,通过不断选择两个国家举行会议,我们希望知道画纸上箭头的总数最多可以达到多少。
**题目**
给定这个世界中的国家数量以及当前国际关系的信息,编写一个程序,通过反复选择两个国家举行会议,使得画纸上箭头的总数达到最大值。
输入格式
从标准输入读取以下输入。
- 第一行包含两个整数 $N$ 和 $M$,以空格分隔。$N$ 表示画纸上点的数量(即这个世界中国家的数量),$M$ 表示画纸上箭头的数量。
- 接下来的 $M$ 行,每行包含画纸上一个箭头的信息。第 $i$ 行($1 \le i \le M$)包含两个整数 $A_i$ 和 $B_i$,以空格分隔。这表示在画纸上从表示国家 $A_i$ 的点指向表示国家 $B_i$ 的点画有一条箭头,即国家 $A_i$ 向国家 $B_i$ 派遣了大使。
输出格式
在标准输出中,输出一行,表示可以实现的箭头数量的最大值。注意,箭头的数量不仅包括会议中新添加的箭头,也包括当前已经存在的箭头。
说明/提示
### 样例 1 解释
例如,可以通过以下步骤实现 10 个箭头:
1. 以国家 1 为中介,国家 2 与国家 3 进行会议。
2. 以国家 4 为中介,国家 3 与国家 5 进行会议。
3. 以国家 3 为中介,国家 2 与国家 5 进行会议。
### 数据范围
所有输入数据均满足以下条件:
- $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 \ne B_i$($1 \le i \le M$)
- $(A_i, B_i) \ne (A_j, B_j)$($1 \le i < j \le M$)
### 子任务
**子任务 1 [5 分]**
- 满足 $N \le 100$。
**子任务 2 [30 分]**
- 满足 $N \le 5000$。
**子任务 3 [65 分]**
无额外限制。
翻译由 Qwen3-235B 完成