QOJ.ac

QOJ

Time Limit: 5 s Memory Limit: 512 MB Total points: 100

#1401. 交朋友很有趣

Statistics

你是一位活跃在历史幕后的特工,每天都在为世界和平而奔走。这个世界有 $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. 以国家 1 为中介,国家 2 和国家 3 举行会议。
  2. 以国家 4 为中介,国家 3 和国家 5 举行会议。
  3. 以国家 3 为中介,国家 2 和国家 5 举行会议。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.