Tarjan
显然不是割点的点答案都是 ( n − 1 ) ∗ 2 (n-1)*2 (n−1)∗2,我们只需要算一算割点的答案就好了。而割点的额外答案为DFS树上各个子树之间两两配对的贡献加上子树内和子树外的贡献。这些在Tarjan求割点的同时都可以顺带出来。
#include<cctype>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 100005
#define M 500005
#define F inline
using namespace std;
typedef long long LL;
struct edge{
int nxt,to; }ed[M<<2];
int n,m,k