题目背景
版权信息:译自 2025年度 国际情报 올림피아드 (Olympiad) 代表学生 选拔考试 R2T3。[CC BY-NC-SA 4.0]
题目描述
给定 n 个点 m 条边的无向连通图 G=(V,E)。图可能有重边,但没有自环。
点编号 0∼n−1,边编号 0∼m−1。
我们称整数数列 a0,a1,…,an−1 是完美的,当且仅当:
- 对于任意一条不重复经过一条边(可以重复经过点)的路径,设其依次经过的点编号为 u0,u1,…,ul−1,则以下条件必须满足:
- 要么 au0≤au1≤⋯≤aul−1,要么 au0≥au1≥⋯≥aul−1。
定义整数数列 a0,a1,…,an−1 的不等对数量为满足 au=av 且 0≤u<v<n 的二元组 (u,v) 的数量。
求出完美数列不等对数量的最大值。
实现细节
你不需要,也不应该实现 main
函数。
你应当实现以下的函数:
long long max_diversity(int n, int m, std::vector<int> U, std::vector<int> V);
- n,m:点数和边数。
- U,V:∀0≤i<m,都有 (U[i],V[i])∈E。
- 返回一个非负整数,表示完美数列不等对数量的最大值。
输入格式
Sample Grader 输入格式如下:
第一行,两个正整数 n,m。
接下来 m 行,第 i 行两个非负整数 U[i−1],V[i−1]。
输出格式
输出一行一个非负整数,表示答案。
5 5
0 1
0 2
1 2
1 3
2 4
7
提示
样例交互
样例交互 1
$n = 5, m = 5, U = [0, 0, 1, 1, 2],V=[1, 2, 2, 3, 4]$。

a=[2,1,1,3,1] 不是完美的。取路径 u0=0,u1=1,u2=3,则 au0=2,au1=1,au2=3,不满足条件。
[1,1,1,1,1] 是完美的,不等对数量为 0。
[2,2,2,3,0] 是完美的,不等对数量为 7。
可以证明完美数列中,不等对数量最大值为 7。故返回 7。
数据范围
- 2≤n≤106;
- 1≤m≤2×106;
- U[i]=V[i];
- 0≤U[i],V[i]<n。
子任务
子任务编号 |
n≤ |
m≤ |
特殊性质 |
得分 |
1 |
500 |
AB |
1 |
2 |
5×103 |
4 |
3 |
106 |
5 |
4 |
500 |
B |
3 |
5 |
5×103 |
5 |
6 |
106 |
28 |
7 |
500 |
103 |
/ |
6 |
8 |
5×103 |
104 |
10 |
9 |
106 |
2×106 |
38 |
- 特殊性质 A:每个点的度数都不大于 4。
- 特殊性质 B:m=n−1。