首页 > 其他 > 详细

P1352 没有上司的舞会

时间:2018-12-28 00:42:22      阅读:208      评论:0      收藏:0      [点我收藏+]

  这篇博文你可以完全不用看,因为这道题实在太简单了。

  我只是写难题写累了来找找自信qwq(所以就5分钟A了……)

  如果你想研究树形dp,建议看一看我的上几篇博文。

  这道题……都不知道怎么说了……

  每一次从儿子节点回来的时候,利用儿子节点的值更新这个父亲节点的值。

  取父亲,加不取儿子的最优解;不取父亲,加上取儿子和不取儿子中的最优解。

  如果你写完了发现和题解一样,那就对了…… (哭笑)

  代码如下:

#include<cstdio>
#include<iostream>
#include<vector>
using namespace std;
#define maxn 20000
vector<int> son[maxn];
int f[maxn][3],n,w[maxn],root=1;
bool vis[maxn]; 
void dfs(int x)
{
    f[x][0]=0;
    f[x][1]=w[x];
    for(int i=0;i<son[x].size();i++)
    {
        int y=son[x][i];
        dfs(y);
        f[x][0]+=max(f[y][1],f[y][0]);
        f[x][1]+=f[y][0];
    }
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
    scanf("%d",&w[i]);
    for(int i=1;i<=n-1;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        son[y].push_back(x);
        vis[x]=1;
    }
    int s,k;
    scanf("%d%d",&s,&k);
    while(vis[root]) root++;
    dfs(root);
    printf("%d",max(f[root][0],f[root][1]));
    return 0;
}

P1352 没有上司的舞会

原文:https://www.cnblogs.com/popo-black-cat/p/10188303.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!