void dfs2(int u,int f,ll s1,ll s2){
res=min(res,n*(s2+sum2[u])-(sum1[u]+s1)*(sum1[u]+s1));
for (int i=0;i<g[u].size();i++){
int v=g[u][i];
if(v==f){
continue;
}
ll ret1=sum1[u]-(sum1[v]+sz[v])+s1;
ll ret2=sum2[u]-(sum2[v]+2*sum1[v]+sz[v])+s2;
ll szu=n-sz[v];
dfs2(v,u,ret1+szu,ret2+2*ret1+szu);
}
return;
}
dfs22222
最新推荐文章于 2024-05-23 11:51:48 发布