求差错,谢谢,只有关键部分代码。
查看原帖
求差错,谢谢,只有关键部分代码。
90972
shitbro楼主2021/1/30 09:09
void DFS(int u,int fa,int root,int typ) {
	color[c[u]] += typ;
	if(color[c[u]] > Max) {
		Max = color[c[u]];
		Sum = c[u];
	}
	else if(color[c[u]] == Max) Sum += c[u];
	for(int i = 0;i < V[u].size();i ++) {
		int v = V[u][i];
		if(v == fa || v == son[root]) continue;
		DFS(v,u,root,typ);
	}
}
void dfs(int u,int fa,int opt) {
	for(int i = 0;i < V[u].size();i ++) {
		int v = V[u][i];
		if(v == fa || v == son[u]) continue;
		dfs(v,u,0);
	}
	if(son[u]) dfs(son[u],u,1);
	DFS(u,fa,u,1); ans[u] = Sum * Max;
	if(!opt) DFS(u,fa,u,-1),Max = Sum = 0;	 
}
2021/1/30 09:09
加载中...