zoukankan      html  css  js  c++  java
  • hdu 1520 树形dp入门

    和poj 1463基本一样。

     1 #include <algorithm>
     2 #include <iostream>
     3 #include <cstring>
     4 #include <cstdio>
     5 using namespace std;
     6 
     7 const int N = 6001;
     8 int head[N];
     9 int rating[N];
    10 bool flag[N];
    11 int dp[N][2];
    12 int e, n;
    13 
    14 void init()
    15 {
    16     e = 0;
    17     memset( flag, true, sizeof(flag) );
    18     memset( head, -1, sizeof(head) );
    19 }
    20 
    21 struct Edge
    22 {
    23     int v, next;
    24 } edge[N];
    25 
    26 void addEdge( int u, int v )
    27 {
    28     edge[e].v = v;
    29     edge[e].next = head[u];
    30     head[u] = e++;
    31 }
    32 
    33 void dfs( int u )
    34 {
    35     dp[u][0] = 0;
    36     dp[u][1] = rating[u];
    37     for ( int i = head[u]; i != -1; i = edge[i].next )
    38     {
    39         int v = edge[i].v;
    40         dfs(v);
    41         dp[u][0] += max( dp[v][0], dp[v][1] );
    42         dp[u][1] += dp[v][0];
    43     }
    44 }
    45 
    46 int main ()
    47 {
    48     while ( scanf("%d", &n) != EOF )
    49     {
    50         for ( int i = 1; i <= n; i++ )
    51         {
    52             scanf("%d", rating + i);
    53         }
    54         init();
    55         int v, u;
    56         while ( scanf("%d%d", &v, &u) != EOF )
    57         {
    58             if ( v == 0 && u == 0 ) break;
    59             addEdge( u, v );
    60             flag[v] = false;
    61         }
    62         int root;
    63         for ( int i = 1; i <= n; i++ )
    64         {
    65             if ( flag[i] )
    66             {
    67                 root = i;
    68                 break;
    69             }
    70         }
    71         dfs(root);
    72         int ans = max( dp[root][0], dp[root][1] );
    73         printf("%d
    ", ans);
    74     }
    75     return 0;
    76 }
  • 相关阅读:
    PyCharm 安装package matplotlib为例
    Julia 下载 安装 juno 开发环境搭建
    进程 线程 协程
    Eclipse Golang 开发环境搭建 GoClipse 插件
    TaxonKit
    tar: Removing leading `/' from member names
    Linux 只列出目录的方法
    unbuntu 安装 teamviewer
    ubuntu 设置静态IP
    Spring 配置文件中 元素 属性 说明
  • 原文地址:https://www.cnblogs.com/huoxiayu/p/4648157.html
Copyright © 2011-2022 走看看