图上计数(Easy)
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

 Easy 版本和 Hard 版本唯一的区别是 Hard 版本删除的是桥,而 Easy 版本删除的是任意边。
你有一张 n 个点 m 条边的无向图,你有无数次删除操作来删除任意条边以获得若干个联通块。定义联通块的大小为其所包含点个数。定义这个图的代价是:你有任意次操作,每次操作合并两个联通块,合并后联通块大小为二者之和,最后剩下两个联通块大小的乘积为此图的代价,若只有一个则代价为0。你需要最大化此图代价。

输入描述:

第一行包含两个整数 n 和 m ,图中顶点的数量和边的数量。
接下来的每 m 行包含两个整数 u 和 v ,表示图中顶点 u 和 v 之间有一条无向边。
\left ( 0< n\leq 10^{6} \right )
\left ( 0\leq m\leq 10^{6} \right )
\left ( 0< u,v\leq n \right )

输出描述:

输出一个整数表示最大代价。
示例1

输入

复制
4 3
1 2
2 3
3 4

输出

复制
4