跟我一起念:poi!poi!poi!
题意简述
1e5个点2e5条边的无向联通图,对于每个点i,输出:删除i之后有多少有序对(x,y)使得x到y不连通,1<=x,y<=n,x,y不一定不等于i。(此题应援bgm:Maxi poi☆poi poi poi!)
思路框架
求割点的时候,顺便求出$DFS$树。然后我们知道,一个数组$a$中任意有序选两个不相同数的积的和,即$\sum\limits_{i=1}^{n}\sum\limits_{j=1}^{n}[i!=j]ij$,就等于$(\sum a_i)^2-\sum(a_i^2)$(即:和平方-平方和)。
树上对于点$u$,如果不是割点,令序列$a$=${size[son1],size[son2]…size[sonk],n-size[u],1}$。(即:删掉点$u$后,被划分出的所有部分(包括$u$自成一家)的点的数量的集合)。然后求$a$的平方和-和平方即珂。由于这些东西的和显然是$n$,求出平方和即珂。
简单维护一下。如果发现$u$不是割点,直接把答案变成$2(n-1)$(因为$x,y$都珂以$=u$。)
代码
1 |
|