CF1092F.Tree with Maximum Cost

普及+/提高

通过率:0%

时间限制:2.00s

内存限制:256MB

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

You are given a tree consisting exactly of nn vertices. Tree is a connected undirected graph with n−1n-1 edges. Each vertex vv of this tree has a value ava_v assigned to it.

Let dist(x,y)dist(x, y) be the distance between the vertices xx and yy. The distance between the vertices is the number of edges on the simple path between them.

Let's define the cost of the tree as the following value: firstly, let's fix some vertex of the tree. Let it be vv. Then the cost of the tree is ∑i=1ndist(i,v)⋅ai\sum\limits_{i = 1}^{n} dist(i, v) \cdot a_i.

Your task is to calculate the maximum possible cost of the tree if you can choose vv arbitrarily.

给你一棵恰好包含 nn 个顶点的树。树是一种具有 n−1n-1 条边的连通无向图。该树的每个顶点 vv 都被赋予一个值 ava_v。

令 dist(x,y)dist(x, y) 表示顶点 xx 与 yy 之间的距离。顶点间的距离定义为它们之间简单路径上的边数。

我们定义这棵树的代价如下:首先,选定树中的某个顶点,记为 vv;则该树的代价为 ∑i=1ndist(i,v)⋅ai\sum\limits_{i = 1}^{n} dist(i, v) \cdot a_i。

你的任务是:在可以任意选择顶点 vv 的前提下,计算该树可能达到的最大代价。

输入格式

The first line contains one integer nn, the number of vertices in the tree (1≤n≤2⋅1051 \le n \le 2 \cdot 10^5).

The second line of the input contains nn integers a1,a2,…,ana_1, a_2, \dots, a_n (1≤ai≤2⋅1051 \le a_i \le 2 \cdot 10^5), where aia_i is the value of the vertex ii.

Each of the next n−1n - 1 lines describes an edge of the tree. Edge ii is denoted by two integers uiu_i and viv_i, the labels of vertices it connects (1≤ui,vi≤n1 \le u_i, v_i \le n, ui≠viu_i \ne v_i).

It is guaranteed that the given edges form a tree.

第一行包含一个整数 nn,表示树中顶点的数量(1≤n≤2⋅1051 \le n \le 2 \cdot 10^5)。

输入的第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤2⋅1051 \le a_i \le 2 \cdot 10^5),其中 aia_i 表示顶点 ii 的权值。

接下来的 n−1n - 1 行每行描述树的一条边。第 ii 条边由两个整数 uiu_i 和 viv_i 表示,即该边所连接的两个顶点的编号(1≤ui,vi≤n1 \le u_i, v_i \le n,且 ui≠viu_i \ne v_i)。

保证所给的边构成一棵树。

输出格式

Print one integer — the maximum possible cost of the tree if you can choose any vertex as vv.

输出一个整数——如果你可以任选一个顶点作为 vv,则树可能的最大代价。

输入输出样例

  • 输入#1

    8
    9 4 1 7 10 1 6 5
    1 2
    2 3
    1 4
    1 5
    5 6
    5 7
    5 8

    输出#1

    121
  • 输入#2

    1
    1337

    输出#2

    0

说明/提示

Picture corresponding to the first example:

You can choose the vertex 33 as a root, then the answer will be 2⋅9+1⋅4+0⋅1+3⋅7+3⋅10+4⋅1+4⋅6+4⋅5=18+4+0+21+30+4+24+20=1212 \cdot 9 + 1 \cdot 4 + 0 \cdot 1 + 3 \cdot 7 + 3 \cdot 10 + 4 \cdot 1 + 4 \cdot 6 + 4 \cdot 5 = 18 + 4 + 0 + 21 + 30 + 4 + 24 + 20 = 121.

In the second example tree consists only of one vertex so the answer is always 00.

对应第一个例子的图片:

你可以选择顶点 33 作为根,则答案为 2⋅9+1⋅4+0⋅1+3⋅7+3⋅10+4⋅1+4⋅6+4⋅5=18+4+0+21+30+4+24+20=1212 \cdot 9 + 1 \cdot 4 + 0 \cdot 1 + 3 \cdot 7 + 3 \cdot 10 + 4 \cdot 1 + 4 \cdot 6 + 4 \cdot 5 = 18 + 4 + 0 + 21 + 30 + 4 + 24 + 20 = 121。

在第二个例子中,树仅包含一个顶点,因此答案恒为 00。

输入解题思路,AI测评打分。不知道怎么写?

首页