zoukankan      html  css  js  c++  java
  • [洛谷1122]最大子树和

    思路:

    随便定一个点为根,遍历整棵树,对于每个结点的每棵子树,若它的值为正,则加入到该结点中。特别地,叶子结点的值等于其权值。

     1 #include<cstdio>
     2 #include<cctype>
     3 #include<vector>
     4 inline int getint() {
     5     register char ch;
     6     while(!isdigit(ch=getchar()));
     7     register int x=ch^'0';
     8     while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');
     9     return x;
    10 }
    11 const int N=16001;
    12 int w[N],f[N]={0};
    13 std::vector<int> e[N];
    14 inline void add_edge(const int u,const int v) {
    15     e[u].push_back(v);
    16     e[v].push_back(u);
    17 }
    18 int ans=0;
    19 void dfs(const int x,const int par) {
    20     f[x]=w[x];
    21     for(unsigned i=0;i<e[x].size();i++) {
    22         if(e[x][i]==par) continue;
    23         dfs(e[x][i],x);
    24         if(f[e[x][i]]>0) f[x]+=f[e[x][i]];
    25     }
    26     ans=std::max(ans,f[x]);
    27 }
    28 int main() {
    29     int n=getint();
    30     for(int i=1;i<=n;i++) scanf("%d",&w[i]);
    31     for(int i=1;i<n;i++) add_edge(getint(),getint());
    32     dfs(1,0);
    33     printf("%d
    ",ans);
    34     return 0;
    35 }
  • 相关阅读:
    嵌入式整体框架——总结
    DSP Bios记忆
    三遥
    usb设备 配置 接口 端点
    ARM, MIPS, Power PC的比较
    STM32 IAP
    FSMC 总结
    BCD码与十进制的相互转换
    读 “cortexM3” 权威指南 小记(一)
    crc校验码的16 32位 查表法 算法记载
  • 原文地址:https://www.cnblogs.com/skylee03/p/7324684.html
Copyright © 2011-2022 走看看