#300. 树屋
树屋
题目背景
在一片神秘的森林,里面有 个古老的树屋,每个树屋上都刻着一个独特的数字 。这些树屋通过 条吊桥连接,形成了一张巨大的树形网络,没有任何环路,保证每个树屋都可以通过吊桥到达。森林的入口是树屋 ,每个吊桥连接着两个树屋 和 。现在,你是一个勇敢的探险家,从入口树屋 开始,沿着吊桥前往每个树屋 (从 到 )。在探险过程中,你会记录下沿途经过的树屋上刻着的数字,按照从 到 的最短路径顺序,组成一个数字序列。
对于每一个目标树屋 ,找到这个数字序列中最长的上升子序列的长度。所谓“最长上升子序列”,就是从序列中挑出一些数字,组成一个新的子序列 ,要求这些数字严格递增(即 ),并且位置按照原序列的顺序(即 ,其中 是序列长度),使得这个子序列的长度 尽可能大。
输入格式
- 第一行:一个整数 ,表示树屋数量。
- 第二行: 个整数 ,表示每个树屋上刻的数字。
- 接下来 行:每行两个整数 ,表示一条吊桥连接树屋 和树屋 。
输出格式
输出 行,第 行表示从树屋 到树屋 的最短路径上形成的数字序列的最长上升子序列的长度。
数据范围
- (树屋数量在 2 到 200,000 之间)
- (每个树屋上的数字是 1 到 之间的整数)
- (吊桥连接的树屋编号在合法范围内)
- (吊桥不会连接同一个树屋)
- 给定的吊桥网络是一棵树(无环,保证连通)
- 输入的所有值均为整数
样例
10
1 2 5 3 4 6 7 3 2 4
1 2
2 3
3 4
4 5
3 6
6 7
1 8
8 9
9 10
1
2
3
3
4
4
5
2
2
3
样例说明
以从树屋 到树屋 的路径为例:
- 最短路径是 ,
- 沿途数字序列为 ,
- 其中最长的上升子序列是 (对应位置 ),长度为 。 因此,第 5 行的输出是 。
统计
相关
在下列比赛中: