#P14423. [JOISC 2014] 有趣的交朋友 / Making Friends is Fun

    ID: 16190 远端评测题 1000ms 256MiB 尝试: 0 已通过: 0 难度: 4 上传者: 标签>图论2014并查集广度优先搜索 BFSJOISC/JOIST(日本)

[JOISC 2014] 有趣的交朋友 / Making Friends is Fun

题目描述

你是活跃于历史幕后的一名特工,日复一日地为世界和平而行动。这个世界共有 NN 个国家,分别被赋予从 11NN 的不同编号。你的目标是在这些国家之间尽可能多地建立友好的关系。

为了制定特工任务的计划,你绘制了一张表示当前国际关系的图。你准备了一张大画纸,首先在上面标出 NN 个点,分别代表这 NN 个国家。接着,为了表示当前的国际关系,你画了 MM 条箭头,每条箭头连接两个国家。从代表国家 aa 的点指向代表国家 bb 的点的箭头,表示“当前,国家 aa 向国家 bb 派遣了大使”。以下,我们将从国家 aa 指向国家 bb 的箭头称为箭头 (a,b)(a, b)。这样,由 NN 个点和 MM 条箭头构成的图,即表示当前的国际关系。

作为促进国家间友好关系的举措,考虑举行两国之间的友好条约缔结会议(以下简称为“会议”)。为了让两个国家 ppqq 举行会议,必须存在一个国家 xx 作为中介,即国家 xxppqq 两国都派遣了大使。举行会议后,两国将互相派遣大使,也就是说,必须添加新的箭头 (p,q)(p, q)(q,p)(q, p)。但若这些箭头已经存在,则无需重复添加。

你的任务是:选择能够举行会议的两个国家,以及作为会议中介的国家,使会议得以举行。为了模拟这一过程,我们将以画纸上箭头的总数作为衡量世界和平程度的标准。也就是说,通过不断选择两个国家举行会议,我们希望知道画纸上箭头的总数最多可以达到多少。

题目

给定这个世界中的国家数量以及当前国际关系的信息,编写一个程序,通过反复选择两个国家举行会议,使得画纸上箭头的总数达到最大值。

输入格式

从标准输入读取以下输入。

  • 第一行包含两个整数 NNMM,以空格分隔。NN 表示画纸上点的数量(即这个世界中国家的数量),MM 表示画纸上箭头的数量。
  • 接下来的 MM 行,每行包含画纸上一个箭头的信息。第 ii 行(1iM1 \le i \le M)包含两个整数 AiA_iBiB_i,以空格分隔。这表示在画纸上从表示国家 AiA_i 的点指向表示国家 BiB_i 的点画有一条箭头,即国家 AiA_i 向国家 BiB_i 派遣了大使。

输出格式

在标准输出中,输出一行,表示可以实现的箭头数量的最大值。注意,箭头的数量不仅包括会议中新添加的箭头,也包括当前已经存在的箭头。

5 4
1 2
1 3
4 3
4 5
10

提示

样例 1 解释

例如,可以通过以下步骤实现 10 个箭头:

  1. 以国家 1 为中介,国家 2 与国家 3 进行会议。
  2. 以国家 4 为中介,国家 3 与国家 5 进行会议。
  3. 以国家 3 为中介,国家 2 与国家 5 进行会议。

数据范围

所有输入数据均满足以下条件:

  • 1N1000001 \le N \le 100\,000
  • 0M2000000 \le M \le 200\,000
  • 1AiN1 \le A_i \le N1iM1 \le i \le M
  • 1BiN1 \le B_i \le N1iM1 \le i \le M
  • AiBiA_i \ne B_i1iM1 \le i \le M
  • (Ai,Bi)(Aj,Bj)(A_i, B_i) \ne (A_j, B_j)1i<jM1 \le i < j \le M

子任务

子任务 1 [5 分]

  • 满足 N100N \le 100

子任务 2 [30 分]

  • 满足 N5000N \le 5000

子任务 3 [65 分]

无额外限制。

翻译由 Qwen3-235B 完成