AcWing 1183. 电力
1 统计连通块个数cnt
2 枚举从哪个块j中删
2.1 从块j中删除哪个点i
2.2 删除点i后块j分成s部分(在样例3中删2后s=0)
总共分成的部分 = s(i新的子块的个数)+cnt(删前总的连通块数)-1(删前子块的个数)
= 当前块的部分(s)+剩余连通块的数量(cnt-1)
= 1+1-1 (样例1:删2后 s=1 cnt=1 -1 =1
= 1+2-1 (样例2:删1后 s=1 cnt=2 -1 =2
= max(1+2-1,0+2-1)(样例3:删1后 s=1 cnt=2 -1=2
删2后 s=0 cnt=2 -1=1(点2所在的块删除2后没有点了 s=0)
dfn(x)<=low(y)
x删掉后y单独出来--多一个单独子树
如果x非根节点 还要多+1
/
x
/ \
问题转化为依次删除每个割点
求全局最大值
作者:仅存老实人
链接:https://www.acwing.com/solution/content/20702/
来源:AcWing
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
#include<bits/stdc++.h>
using namespace std;
const int N = 1e4 + 10, M = 3e4 + 10;
int h[N], e[M], ne[M], idx;
int low[N], dfn[N], timep;