F.A.Q
Hand In Hand
Online Acmers
Problem Archive
Realtime Judge Status
Authors Ranklist
 
     C/C++/Java Exams     
ACM Steps
Go to Job
Contest LiveCast
ICPC@China
Best Coder beta
VIP | STD Contests
    DIY | Web-DIY beta
Author ID 
Password 
 Register new ID

树的分割

Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)
Total Submission(s): 197    Accepted Submission(s): 34


Problem Description
对于一棵每个点都有点权的树,我们可以定义这棵树$T$的价值为$T_{min}\times T_{max}$,其中$T_{min}$为树上点权最小的点,$T_{max}$为树上点权最大的点。

现在你可以选择删去树上的一条边,此时价值会变成断掉边之后形成的两棵树的价值和,你需要算出这个最大的价值和。
 

Input
第一行输入一行一个正整数$T[1\leq T\leq 10]$,代表数据的组数。

对于每组数据,第一行输入一个正整数$n[2\leq n\leq 10^5]$,代表树上的节点数。

第二行输入一行$n$个整数代表每个点的点权,保证点权范围在$[-10^9,10^9]$之间。

接下来$n-1$行,每行两个正整树$u,v[1\leq u,v\leq n]$代表边连接的两个点。
 

Output
对于每组数据,输出一行一个整数代表最大的价值。
 

Sample Input
1 4 1 2 3 4 1 2 2 3 3 4
 

Sample Output
19
 

Source
 

Statistic | Submit | Discuss | Note
Hangzhou Dianzi University Online Judge 3.0
Copyright © 2005-2024 HDU ACM Team. All Rights Reserved.
Designer & Developer : Wang Rongtao LinLe GaoJie GanLu
Total 0.000000(s) query 1, Server time : 2024-05-19 01:55:31, Gzip enabled