题目连接:https://www.luogu.org/problem/show?pid=1122
解题思路:
这是一道类似于树形DP的题。
我们可以用求最大字段和的方法求最大子树和,所以问题就转化成了如何在遍历树记录子树和。
我们可以用f[x]数组储存以x为根的子树和,一直搜到它最远的儿子,然后返回时如果当前的值>0就说明能产生影响,就加上,然后标记该点,用ans储存最大的子树和就行了。
#include<iostream>
#include<cstdio>
using namespace std;
#define N 17000
struct node{
int from,to;
}list[N*2];
int head[