首先添加一条边变成基环树,基环树中恰好有 n 条边,因此初始的 m = n - 1 才可能有合法方案。
之后考虑只能添加一条边,最多只能有两个连通块
一个连通块,这个连通块就是一棵树,那么不能连出一条自环,答案就是:2n×(n−1)−(n−1)
两个连通块,此时两个连通块必然是一棵树和一棵基环树,大小为 n1 和 n2。那么答案为 n1×n2
定义基环树为n个点、条边且不包含重边和自环的无向连通图。形象化的描述,基环树可以由一棵树再添加一条边后形成(不能是树上已存在的边)现在薯条哥拿到了一个无向图,她想连一条边使得这个无向图变成基环树。
薯条哥想知道,有多少种不同的连边方案?
第一行输入两个正整数n,m(1≤n,m≤105),代表> 无向图的点数和边数。 接下来的m行,每行输入两个正整数u,v(1≤u,v≤n),代表节点u和节点v有一条边连接。保证给定的无向图不包含重边和自环。
输出一个整数,代表添加边的方案数。
输入
4 4
1 2
1 3
2 3
2 4
输出
0
样例解释
本身该无向图已经是基环树,因此方家数为0。
输入
4 3
1 2
1 3
2 3
输出
3
样例解释
第一个方案:连接1和4。
第二个方案:连接2和4。
第三个方案:连接3和4。