标签:style http io ar color os sp for on
题目链接:点击打开链接
题意:给出一棵含有n个点的树,每个点权值为wi,求从根节点到叶子结点权值和最大的那条路经的权值和是多少。
类似数塔,从顶自底记忆化搜。
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <string>
#include <cctype>
#include <vector>
#include <cstdio>
#include <cmath>
#include <queue>
#include <stack>
#include <map>
#include <set>
#define maxn 10005
#define _ll __int64
#define ll long long
#define INF 0x3f3f3f3f
#define Mod 1<<40+10
#define pp pair<int,int>
#define ull unsigned long long
using namespace std;
int n,dp[10005],root;
vector <int> eg[10005];
int dfs(int u)
{
int tem=0;
for(int i=0;i<eg[u].size();i++)
tem=max(tem,dfs(eg[u][i]));
dp[u]+=tem;
return dp[u];
}
int main()
{
int u,c;
while(~scanf("%d",&n))
{
for(int i=0;i<=n;i++)
eg[i].clear();
for(int i=1;i<=n;i++)
{
scanf("%d%d",&u,&c);
eg[u].push_back(i);
if(u==0)root=i;
dp[i]=c;
}
printf("%d\n",dfs(root));
}
return 0;
}标签:style http io ar color os sp for on
原文地址:http://blog.csdn.net/qq_16255321/article/details/41646659