题目描述
EasyEasyEasy 版本和 HardHardHard 版本唯一的区别是 HardHardHard 版本删除的是桥,而 EasyEasyEasy 版本删除的是任意边。
你有一张 nnn 个点 mmm 条边的无向图,你有无数次删除操作来删除任意条桥以获得若干个联通块。定义联通块的大小为其所包含点个数。定义这个图的代价是:你有任意次操作,每次操作合并两个联通块,合并后联通块大小为二者之和,最后剩下两个联通块大小的乘积为此图的代价,若只有一个则代价为0。你需要最大化此图代价。
对于桥的定义:对于一个无向图,如果删掉一条边后图中的连通块数增加了,则称这条边为桥或者割边。
输入
第一行包含两个整数 nnn 和 mmm ,图中顶点的数量和边的数量。
接下来的每 mmm 行包含两个整数 uuu 和 vvv ,表示图中顶点 uuu 和 vvv 之间有一条无向边。
(0<n≤4×105)\left ( 0< n\leq 4\times10^{5} \right )(0<n≤4×105)
(0≤m≤106)\left ( 0\leq m\leq 10^{6} \right )(0≤m≤106)
(0<u,v≤n)\left ( 0< u,v\leq n \right )(0<u,v≤n)
输出
输出一个整数表示最大代价。
样例输入 Copy
10 12
1 2
1 3
2 3
2 4
4 5
5 6
6 7
7 4
3 8
8 9
9 10
10 8
样例输出 Copy
24