第二个点MIE了,是需要优化吗?蒟蒻疑惑
查看原帖
第二个点MIE了,是需要优化吗?蒟蒻疑惑
402319
x。。。。。楼主2021/7/2 20:50
#include<bits/stdc++.h>
using namespace std;
vector<int>ve[7000]; 
int n,h[7000],a,b,book[7000],foot,f[7000][7000];
void dp(int x)
{
	f[x][0]=0;
	f[x][1]=h[x];
	for(int i=0;i<ve[x].size();i++)
	{
		int y=ve[x][i];
		dp(y);
		f[x][0]+=max(f[y][1],f[y][0]);
		f[x][1]+=f[y][0];
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>h[i];
	}
	for(int i=1;i<=n-1;i++)
	{
		cin>>a>>b;
		ve[b].push_back(a);
		book[a]=1;
	}
	for(int i=1;i<=n;i++)
	{
		if(book[i]==0)
		{
			foot=i;
			break;
		}
	}
	dp(foot);
	cout<<max(f[foot][0],f[foot][1]);
}
2021/7/2 20:50
加载中...