Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>#include <algorithm>#include <cstring>#include <iostream>#include <vector>using namespace std;#define MAXN 100010#define MAXM 50010#define ll long longusing namespace std;vector<pair<int, int>> ma[MAXN];int m, e[MAXM << 1], nx[MAXM << 1], ed[MAXN], cnt, f[MAXN], path[MAXN], v[MAXM << 1], siz[MAXN], n;int flag = 0;int vis[MAXN];int huan[MAXN];ll ans;ll calc(int y)// fa = x , son = y{return (ll) siz[y] * ((ll) n - (ll) siz[y]);}void dfs(int p, int fa) {vis[p] = vis[fa] + 1;siz[p] = 1;int i = ed[p];for (int j = 0; j < ma[p].size(); ++j) {int tempe = ma[p][j].first;if (tempe != fa && !vis[tempe]) {dfs(tempe, p);