求助!第一个测试点dev_c++上能过,洛谷报错
查看原帖
求助!第一个测试点dev_c++上能过,洛谷报错
677150
ThEskY_B1ackeR楼主2024/1/14 09:11
#include<bits/stdc++.h>
using namespace std;
int n;
const int N=6e3+10;
int f_1[N],f_0[N]; 
vector<int> e[N];
void Pack(int u,int v){
	f_1[u]+=f_0[v];
	f_0[u]+=max(f_1[v],f_0[v]);
}
void Dfs(int u){
	for(auto v:e[u]){
		Dfs(v);
	}
	for(auto v:e[u]){
		Pack(u,v);
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>f_1[i];
	}
	int degree[n+1];
	for(int i=1;i<n;i++){
		int u,v;
		cin>>v>>u;
		e[u].push_back(v);
		degree[v]++;
	}
	int head;
	for(int i=1;i<=n;i++){
		if(!degree[i]){
			head=i;
			break;
		}
	}
	Dfs(head);
	cout<<max(f_1[head],f_0[head]);
	return 0;
}

只过了3、7

2024/1/14 09:11
加载中...