求大神用c++或c语言解答,本人速求,谢谢!

题目描述
欲穷千里目,更上一层楼。
阿克先生喜欢旅游。某一天,他来到魔法森林旅游。
经过观察,他发现魔法森林一共有​n个城市,每个城市有一座高高的魔法塔,第i​个城市的魔法塔的高度为hi​。这些城市一共由​n-1条道路连接,任意两座城市互相可达。
阿克先生想要站在某一座塔上观察尽可能多城市的风景。不幸的是,阿克先生没有透视眼,较高的塔将会遮蔽较低的塔。同时,魔法森林其他地方也被茂林覆盖,他的视线无法穿过茂林(但因为是魔法塔,塔上储存了镜面魔法,可以使阿克先生的视线在城市水平任意角度转弯)。
所以,他只能沿着n-1​条道路观察其他的点。
但是,魔法森林的道路蜿蜒曲折,他观看的城市到他所在的点的路径要么互相包含要么两两不交。且从他所在的点开始,到任意它观察的城市,所成的高度序列单调不增。
阿克先生想要知道他最多能观察到多少个城市(包括自身),他快速地秒了这道题,但他懒得写代码了,所以请你帮他算一算。

输入
第一行一个整数​n;
第二行​个整数​h1,h2…hn;
第三到第​n+1行两个整数u,v,表示有一个连接​u,v的道路。

输出
一个整数​ans,表示最多能看到多少个城市。

样例输入
11
10 4 5 11 8 9 3 2 1 7 6
1 2
1 3
1 4
2 10
2 11
3 7
3 8
4 5
4 6
7 9

样例输出
7

数据范围限制
对于​30%的数据 保证​ n<=5000
对于另外20​%的数据 保证 v=u+1
对于另外20%的数据 保证 hi互不相同
对于​100%的数据 保证​ n<=500000

提示
选择4号城市,可以看到1,3,4,5,6,7,9共7个城市

1个回答

兄弟,发帖子的时间用来好好想想吧。全部都是速求,速求。干脆找个人帮你写算了。不过别忘了给工资。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问