intさわだんのBlack History

刹那的レジェンドになりたい。

第7回日本情報オリンピック 春合宿 1日目 問題1 「委員会」 (Committee)

なんか前解いたことある気がする。

解法:DP

コーナーケースがある。

#include <bits/stdc++.h>

using namespace std;
const int INF = 100000000;
int n,ans=-INF,sa[100004][2],am=-INF,dp[100003];
int main(){
	scanf("%d",&n);
	for(int i = 1;i <= n;i++)scanf("%d%d",&sa[i][0],&sa[i][1]),am=max(am,sa[i][1]);
	if(am < 0){printf("%d\n",am);
	}else{
	for(int i = n;i >= 1;i--){
		dp[i] = max(0,dp[i]+sa[i][1]);
		if(dp[i] > 0)dp[sa[i][0]] += dp[i];
		ans = max(ans,dp[i]);
	}
	ans = max(ans,dp[0]);
	printf("%d\n",ans);
	}
	return 0;
}