求助。。
查看原帖
求助。。
296900
Xunxas楼主2020/6/29 17:57
#include<bits/stdc++.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
vector<int> son[6010];
bool vis[6010]={};
int h[6010];
int llx[6010][1];  //1´æÔÚ  0²»´æÔÚ 

void dp(int k)
{
//	cout<<son[k].size()<<endl;
	
	llx[k][1]=h[k];
	llx[k][0]=0;
	
	for(int i=0;i<son[k].size();i++)
    {
    	int u=son[k][i];
    	dp(u);
    	llx[k][0]+=max(llx[u][1],llx[u][0]);
    	llx[k][1]+=llx[u][0];
	}
	cout<<llx[k][1]<<" "<<llx[k][2]<<endl;

}


int main() {

	
	int n;
	cin>>n;
	
	for(int i=1;i<=n;i++)
	cin>>h[i];
	
	int x,y;
	
	for(int i=1;i<=n-1;i++)
	{
		cin>>x>>y;
		son[y].push_back(x);
		vis[x]=1;
	}
	
	int root;
	
	for(int i=1;i<=n;i++)
	if(!vis[i])
	{
		root=i;
		break;
	}
	
	dp(root);
	
	
	cout<<max(llx[root][1],llx[root][0]);

	
	return 0;
}















2020/6/29 17:57
加载中...