poj 2342 Anniversary party

来源:互联网 发布:博思ug数控编程视频 编辑:程序博客网 时间:2024/05/17 05:12
#include<iostream>
#include<stdio.h> 
using namespace std;


int n,m;
int dp[10005][2];
int boss[10005];
 int vis[10005];
 void dis(int node)
 {
  vis[node]=1;
  for(int i=1;i<=n;i++)
  {
  if(!vis[i]&&boss[i]==node)
  {
  dis(i);
  dp[node][1]+=dp[i][0];
  dp[node][0] +=max(dp[i][1],dp[i][0]);
}
}
 }
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>dp[i][1];
}
int root;
for(int i=1;i<n;i++)
{
int a,b;
boss[a]=b;
root=b;
}

while(boss[root])
root=boss[root];

dis(root);
cout<<max(dp[root][0],dp[root][1]);

return 0;
}
原创粉丝点击