题目传送门

 /*
题意:上司在,员工不在,反之不一定。每一个人有一个权值,问权值和最大多少。
树形DP:把上司和员工的关系看成根节点和子节点的关系,两者有状态转移方程:
dp[rt][0] += max (dp[son][1], dp[son][0]); //上司不去
dp[rt][1] += dp[son][0]; //上司去,员工都不去
*/
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <cmath>
using namespace std; const int MAXN = 6e3 + ;
const int INF = 0x3f3f3f3f;
bool vis[MAXN];
vector<int> edge[MAXN];
int dp[MAXN][];
int n; void DFS(int rt)
{
vis[rt] = true;
dp[rt][] = ;
for (int i=; i<edge[rt].size (); ++i)
{
int son = edge[rt][i];
if (!vis[son])
{
DFS (son);
dp[rt][] += max (dp[son][], dp[son][]);
dp[rt][] += dp[son][];
}
}
} int main(void) //URAL 1039 Anniversary Party
{
// freopen ("URAL_1039.in", "r", stdin); while (scanf ("%d", &n) == )
{
memset (vis, false, sizeof (vis));
memset (dp, , sizeof (dp));
for (int i=; i<=n; ++i) scanf ("%d", &dp[i][]); int l, k;
while (scanf ("%d%d", &l, &k) == )
{
if (l == && k == ) break;
vis[l] = true;
edge[l].push_back (k);
edge[k].push_back (l);
} int root = ;
for (int i=; i<=n; ++i)
{
if (!vis[i]) {root = i; break;}
} memset (vis, false, sizeof (vis)); DFS (root);
printf ("%d\n", max (dp[root][], dp[root][]));
} return ;
}

树形DP URAL 1039 Anniversary Party的更多相关文章

  1. POJ 2342 Anniversary party / HDU 1520 Anniversary party / URAL 1039 Anniversary party(树型动态规划)

    POJ 2342 Anniversary party / HDU 1520 Anniversary party / URAL 1039 Anniversary party(树型动态规划) Descri ...

  2. 树形dp(A - Anniversary party HDU - 1520 )

    题目链接:https://cn.vjudge.net/contest/277955#problem/A 题目大意:略 具体思路:刚开始接触树形dp,说一下我对这个题的初步理解吧,首先,我们从根节点开始 ...

  3. Ural 1039 Anniversary Party

    题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1039 Dynamic Programming. 建立树形结构,每个employee有两个 ...

  4. poj 2342 Anniversary party 简单树形dp

    Anniversary party Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 3862   Accepted: 2171 ...

  5. HDU 1520.Anniversary party 基础的树形dp

    Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  6. POJ 2342 - Anniversary party - [树形DP]

    题目链接:http://poj.org/problem?id=2342 Description There is going to be a party to celebrate the 80-th ...

  7. hdu Anniversary party 树形DP,点带有值。求MAX

    Anniversary party Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  8. hdu 1520 Anniversary party(第一道树形dp)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1520 Anniversary party Time Limit: 2000/1000 MS (Java ...

  9. ural 1039 树dp

    http://acm.timus.ru/problem.aspx?space=1&num=1039 1039. Anniversary Party Time limit: 0.5 second ...

随机推荐

  1. C++对拍数据生成

    #include<map> #include<ctime> #include<queue> #include<cmath> #include<cs ...

  2. Layui图标

    layui 图标 layui 的所有图标全部采用字体形式,取材于阿里巴巴矢量图标库(iconfont).因此你可以把一个 icon 看作是一个普通的文字,这意味着你直接用 css 控制文字属性,如 c ...

  3. Ubuntu 16.04创建Swap分区或增加Swap分区容量(转)

    要在Ubuntu中要创建Swap分区主要有如下2种方式: 一.传统创建方式 一般情况下,我们都会使用dd命令来预先创建交换分区文件,然后再用/dev/zero将该文件的内容全部置零,创建时还将用到bs ...

  4. kkpager的改进,Ajax数据变化但是页码不变的问题

    原文:http://blog.csdn.net/xiaojian1018/article/details/45564051 kkpager 是一个简单分页展示插件,需要依赖jquery.下载地址:ht ...

  5. 我的arcgis培训照片7

    来自:http://www.cioiot.com/successview-553-1.html

  6. How to enable Google Play App Signing

    how to enable google play app signing  ------------------------------------------------------------- ...

  7. centos 建立Clamav自动扫描脚本

    vim autoscan.sh #建立自动扫描脚本 #!/bin/bash PATH=/usr/bin:/bin CLAMSCANTMP=`mktemp` clamdscan --recursive ...

  8. AE After Effect 如何替换和修改素材

    替换素材:如图所示,相框外的人是成双成对的,相框里面的却只有一个人,我们想要把这个素材替换成两个人的.我们鼠标放到视频预览框的任何一个元素上面底部都会提示这是什么素材.比如我放到一个人的上面,则该人物 ...

  9. 改动Centosserver主机名称

    1.暂时改动server主机名称: hostname myhost. myhost为你指定的主机名称. 2.永久性的改动主机名称 Centosserver安装好之后.默认的主机名为:localhost ...

  10. Appium、selenium与Robot Framework

    Robot Framework + Appium Appium-Python-Client: 与Appium Library和Appium Server的交互Appium Library通过Appii ...