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

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

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

题目描述

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

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

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

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

题目

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

输入格式

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

  • 第一行包含两个整数 NN 和 MM,以空格分隔。NN 表示画纸上点的数量(即这个世界中国家的数量),MM 表示画纸上箭头的数量。
  • 接下来的 MM 行,每行包含画纸上一个箭头的信息。第 ii 行(1≤i≤M1 \le i \le M)包含两个整数 AiA_i 和 BiB_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 进行会议。

数据范围

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

  • 1≤N≤100 0001 \le N \le 100\,000
  • 0≤M≤200 0000 \le M \le 200\,000
  • 1≤Ai≤N1 \le A_i \le N(1≤i≤M1 \le i \le M)
  • 1≤Bi≤N1 \le B_i \le N(1≤i≤M1 \le i \le M)
  • Ai≠BiA_i \ne B_i(1≤i≤M1 \le i \le M)
  • (Ai,Bi)≠(Aj,Bj)(A_i, B_i) \ne (A_j, B_j)(1≤i<j≤M1 \le i < j \le M)

子任务

子任务 1 [5 分]

  • 满足 N≤100N \le 100。

子任务 2 [30 分]

  • 满足 N≤5000N \le 5000。

子任务 3 [65 分]

无额外限制。

翻译由 Qwen3-235B 完成