• 洛谷 1122 最大子树和


    【题解】

      直接做树形DP即可。f[i]表示取i及其子树的最大的美丽指数,若某个儿子son满足f[son]>0,f[i]就加上f[son].

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<algorithm>
     4 #define LL long long
     5 #define N 200010
     6 #define rg register
     7 using namespace std;
     8 int n,m,ans=-2e9,tot,last[N],f[N];
     9 struct edge{
    10     int to,pre;
    11 }e[N];
    12 inline int read(){
    13     int k=0,f=1; char c=getchar();
    14     while(c<'0'||c>'9')c=='-'&&(f=-1),c=getchar();
    15     while('0'<=c&&c<='9')k=k*10+c-'0',c=getchar();
    16     return k*f;
    17 } 
    18 void dfs(int x,int fa){
    19     for(rg int i=last[x],to;i;i=e[i].pre)if((to=e[i].to)!=fa){
    20         dfs(to,x); if(f[to]>0) f[x]+=f[to];
    21     }
    22     ans=max(ans,f[x]);
    23 }
    24 int main(){
    25     n=read();
    26     for(rg int i=1;i<=n;i++) f[i]=read();
    27     for(rg int i=1;i<n;i++){
    28         int u=read(),v=read();
    29         e[++tot]=(edge){v,last[u]}; last[u]=tot;
    30         e[++tot]=(edge){u,last[v]}; last[v]=tot;
    31     }
    32     dfs(1,0);
    33     printf("%d
    ",ans);
    34 }
    View Code
  • 相关阅读:
    深拷贝与浅拷贝
    图片旋转插件
    promise 小抄
    github fork项目更改后与原作者同步更新
    eslint 的配置
    css规范
    Object类
    BigIntager
    System类
    Math类和Random类
  • 原文地址:https://www.cnblogs.com/DriverLao/p/9538494.html
Copyright © 2020-2023  润新知