一.题目
二. 代码
日后可能会补上一些注释和解析
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
static int max;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[] a = new int[n + 1];
for(int i = 1 ;i <= n; i++) {
a[i] = in.nextInt();
}
ArrayList<Integer>[] graph = new ArrayList[n + 1];
max = 0;
for(int i =0 ;i <= n; i ++) {
graph[i] = new ArrayList<>();
}
for(int i = 0; i < n - 1; i++) {
int l = in.nextInt();
int r = in.nextInt();
graph[l].add(r);
graph[r].add(l);
}
for(int i =1; i<= n;i ++) {
dfs(graph, a, i,0);
}
System.out.println(max);
}
public static void dfs(List<Integer>[] a, int[] u , int now, int length) {
length++;
max = Math.max(max, length);
List<Integer> as = a[now];
for(int i : as) {
if(u[i] > u[now]) {
dfs(a, u , i, length);
}
}
}
}