神奇的mle了一个点,但是没有开过大的数组和结构体
查看原帖
神奇的mle了一个点,但是没有开过大的数组和结构体
302750
Main_WF楼主2022/7/12 16:37
#include<bits/stdc++.h>
using namespace std;
struct tree{
	int k,d,b,r,son[6005];
}node[6005];
int n,f[6005][2];
bool vis[6005];
queue<int>q;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>node[i].r;
	for(int i=1;i<=n-1;i++)
	{
		int l,k;
		cin>>l>>k;
		node[k].son[++node[k].k]=l;
		node[l].b=k;
	}
	for(int i=1;i<=n;i++)
		if(!node[i].k)
			q.push(i);
	while(!q.empty())
	{
		int x=q.front();
		q.pop();
		for(int i=1;i<=node[x].k;i++)
		{
			int j=node[x].son[i];
			f[x][0]+=max(f[j][0],f[j][1]);
			f[x][1]+=f[j][0]; 
		}
		f[x][1]+=node[x].r;
		if(node[x].b&&!vis[node[x].b])
		{
			q.push(node[x].b);
			vis[node[x].b]=1;
		}
	}
	for(int i=1;i<=n;i++)
		if(!node[i].b)
			cout<<max(f[i][0],f[i][1]);
}
2022/7/12 16:37
加载中...