大江东去,浪淘尽,千古风流人物。故垒西边,人道是,三国周郎赤壁。乱石穿空,惊涛拍岸,卷起千堆雪。江山如画,一时多少豪杰。遥想公瑾当年,小乔初嫁了,雄姿英发。羽扇纶巾,谈笑间,樯橹灰飞烟灭。故国神游,多情应笑我,早生华发。人生如梦,一尊还酹江月。

【模板】树形DP求直径和负直径

注意,若负直径指广义的直径——可以缩成一个点,树形DP无法正确求出,需要将初值设为0(若大于0则不更新)

void dfs(int u,int fa,ll &d1,ll &d2){
	f[u]=f2[u]=0;
	for(int i=head[u];i+1;i=e[i].nxt){
		if(cut[i]) continue;
		int v=e[i].v,w=e[i].w;
		if(v==fa) continue;
		dfs(v,u,d1,d2);
		d1=max(d1,f[v]+w+f[u]);
		f[u]=max(f[u],f[v]+w);
		d2=min(d2,f2[v]+w+f2[u]);
		f2[u]=min(f2[u],f2[v]+w);
	}
}
posted @ 2019-09-28 16:08  White_star  阅读(214)  评论(0编辑  收藏  举报
}