题解 | #树上上升序列#

树上上升序列

http://www.nowcoder.com/questionTerminal/8eda05798f8c486a9f954432515ae436

需要自己创建树的数据结构
有向无环图
dfs

import java.util.Scanner;
import java.util.*;
import java.io.*;


public class Main {
    private static int max = 0;
    private static ArrayList<Integer>[] graph;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr=new int[n+1];
        for(int i=1;i<=n;i++){
            arr[i] = sc.nextInt();
        }
        graph = new ArrayList[n+1];
        for(int i=1;i<=n;i++){
            graph[i] = new ArrayList<>();
        }
        for(int i=1;i<n;i++){
            int a = sc.nextInt();
            int b = sc.nextInt();
            graph[a].add(b);
            graph[b].add(a);
        }
        for(int i=1;i<=n;i++){
            dfs(arr,i,0);
        }

        System.out.println(max);
    }
    public static void dfs(int[] arr, int cur, int len){
        len++;
        max = Math.max(max,len);
        for(int num:graph[cur]){
            if(arr[num] > arr[cur]) dfs(arr,num,len );
        }
    }

}


试卷解析 文章被收录于专栏

解析

全部评论

相关推荐

3 收藏 评论
分享
牛客网
牛客企业服务