Orwell


私信TA

用户名:Orwell

访问量:612

签 名:

等  级
排  名 26574
经  验 519
参赛次数 0
文章发表 2
年  龄 0
在职情况 学生
学  校 苏大文正
专  业

  自我简介:

TA的其他文章

解题思路:

对于每个父节点,它的最大高度应为其子节点的最大高度加上子节点的总数。

参考代码:

import java.util.ArrayList;
import java.util.Scanner;

//左孩子右兄弟【第十二届】【省赛】【C组】
public class PREV_269 {
   static int MaxLevel = 0;
   static ArrayList<Integer>[] lists;
   public static void main(String[] args) {
       Scanner scanner = new Scanner(System.in);
       int N = scanner.nextInt();
       lists = new ArrayList[N+1];
       for (int i = 1; i < N+1; i++) {
           lists[i] = new ArrayList<Integer>();
       }
       for (int i = 2; i < N+1; i++) {
           int node = scanner.nextInt();
           lists[node].add(i);
       }
       dfs(0,1);
       System.out.println(MaxLevel);
   }
   public static void dfs(int total ,int father){
       int size = lists[father].size();
       if(size == 0){//size表示的是实际存在的数据大小
       MaxLevel = Math.max(total,MaxLevel);
       return;
       }
       for (int temp :
               lists[father]) {
           dfs(total+size,temp);
       }
   }
}

 

0.0分

3 人评分

  评论区