求助dalao,最后四个点不知道为什么re了,数组大小也没问题啊
查看原帖
求助dalao,最后四个点不知道为什么re了,数组大小也没问题啊
879396
zzf12345666楼主2023/3/25 21:15
import java.util.*;
public class Main {
    static int N=100010;
    static int M=200010;
    static int idx,n;
    static int []h=new int[N];
    static int []e=new int[M];
    static int []ne=new int[M];
    static long []f=new long[N];
    static long []happy=new long[N];
    public static void main(String[] args){
        Scanner in =new Scanner(System.in);
          n=in.nextInt();
          for(int i=1;i<=n;i++){
              happy[i]=in.nextLong();
          }
          Arrays.fill(h,-1);
          for(int i=0;i<n-1;i++){
              int l=in.nextInt();
              int r=in.nextInt();
              add(l,r);
              add(r,l);
          }
          dfs(1,-1);
          long res=f[1];
          for(int i=2;i<=n;i++){
              res=Math.max(f[i],res);
          }
          res=Math.max(res,0);
          System.out.println(res);
    }
    static void add(int l,int r){
        e[idx]=r;
        ne[idx]=h[l];
        h[l]=idx++;
    }
    static void dfs(int u,int father){
        f[u]=happy[u];
        for(int i=h[u];i!=-1;i=ne[i]){
            int j=e[i];
            if(j!=father) {
                dfs(j,u);
                f[u] += Math.max(f[j], 0);
            }
        }
    }
}

2023/3/25 21:15
加载中...