CF1000G.Two-Paths

省选/NOI-

通过率:0%

时间限制:3.50s

内存限制:256MB

AC君温馨提醒

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

题目描述

You are given a weighted tree (undirected connected graph with no cycles, loops or multiple edges) with nn vertices. The edge uj,vj{u_j, v_j} has weight wjw_j. Also each vertex ii has its own value aia_i assigned to it.

Let's call a path starting in vertex uu and ending in vertex vv, where each edge can appear no more than twice (regardless of direction), a 2-path. Vertices can appear in the 2-path multiple times (even start and end vertices).

For some 2-path pp profit Pr(p)=∑v∈distinct vertices in pav−∑e∈distinct edges in pke⋅we\text{Pr}(p) = \sum\limits_{v \in \text{distinct vertices in } p}{a_v} - \sum\limits_{e \in \text{distinct edges in } p}{k_e \cdot w_e}, where kek_e is the number of times edge ee appears in pp. That is, vertices are counted once, but edges are counted the number of times they appear in pp.

You are about to answer mm queries. Each query is a pair of vertices (qu,qv)(qu, qv). For each query find 2-path pp from ququ to qvqv with maximal profit Pr(p)\text{Pr}(p).

给你一棵带权树(即无环、无自环、无重边的无向连通图),该树包含 nn 个顶点。边 {uj,vj}\{u_j, v_j\} 的权重为 wjw_j。此外,每个顶点 ii 都被赋予一个值 aia_i。

我们称一条从顶点 uu 出发、到顶点 vv 结束的路径为2-路径(2-path),其中每条边在该路径中至多出现两次(不区分方向)。顶点在 2-路径中可以多次出现(包括起点和终点)。

对于某条 2-路径 pp,其收益(profit)定义为

Pr(p)=∑v∈distinct vertices in pav−∑e∈distinct edges in pke⋅we,\text{Pr}(p) = \sum\limits_{v \in \text{distinct vertices in } p}{a_v} - \sum\limits_{e \in \text{distinct edges in } p}{k_e \cdot w_e},

其中 kek_e 表示边 ee 在 pp 中出现的次数。即:顶点仅按其是否在 pp 中出现过计一次,而边则按其在 pp 中实际出现的次数加权计入。

你将回答 mm 个查询。每个查询给出一对顶点 (qu,qv)(qu, qv)。对每个查询,请找出一条从 ququ 到 qvqv 的 2-路径 pp,使得其收益 Pr(p)\text{Pr}(p) 最大。

输入格式

The first line contains two integers nn and qq (2≤n≤3⋅1052 \le n \le 3 \cdot 10^5, 1≤q≤4⋅1051 \le q \le 4 \cdot 10^5) — the number of vertices in the tree and the number of queries.

The second line contains nn space-separated integers a1,a2,…,ana_1, a_2, \dots, a_n (1≤ai≤109)(1 \le a_i \le 10^9) — the values of the vertices.

Next n−1n - 1 lines contain descriptions of edges: each line contains three space separated integers uiu_i, viv_i and wiw_i (1≤ui,vi≤n1 \le u_i, v_i \le n, ui≠viu_i \neq v_i, 1≤wi≤1091 \le w_i \le 10^9) — there is edge ui,vi{u_i, v_i} with weight wiw_i in the tree.

Next qq lines contain queries (one per line). Each query contains two integers quiqu_i and qviqv_i (1≤qui,qvi≤n)(1 \le qu_i, qv_i \le n) — endpoints of the 2-path you need to find.

第一行包含两个整数 nn 和 qq(2≤n≤3⋅1052 \le n \le 3 \cdot 10^5,1≤q≤4⋅1051 \le q \le 4 \cdot 10^5)—— 分别表示树中顶点的数量和查询的数量。

第二行包含 nn 个用空格分隔的整数 a1,a2,…,ana_1, a_2, \dots, a_n(1≤ai≤1091 \le a_i \le 10^9)—— 表示各顶点的权值。

接下来 n−1n - 1 行描述树的边:每行包含三个用空格分隔的整数 uiu_i、viv_i 和 wiw_i(1≤ui,vi≤n1 \le u_i, v_i \le n,ui≠viu_i \neq v_i,1≤wi≤1091 \le w_i \le 10^9)—— 表示树中存在一条连接顶点 uiu_i 与 viv_i、权重为 wiw_i 的边。

接下来 qq 行为查询(每行一个查询)。每个查询包含两个整数 quiqu_i 和 qviqv_i(1≤qui,qvi≤n1 \le qu_i, qv_i \le n)—— 表示你需要寻找的“2-路径”的两个端点。

输出格式

For each query print one integer per line — maximal profit Pr(p)\text{Pr}(p) of the some 2-path pp with the corresponding endpoints.

对于每个查询,每行输出一个整数——具有对应端点的某条 2-路径 pp 的最大收益 Pr(p)\text{Pr}(p)。

输入输出样例

  • 输入#1

    7 6
    6 5 5 3 2 1 2
    1 2 2
    2 3 2
    2 4 1
    4 5 1
    6 4 2
    7 3 25
    1 1
    4 4
    5 6
    6 4
    3 4
    3 7

    输出#1

    9
    9
    9
    8
    12
    -14

说明/提示

Explanation of queries:

  1. (1,1)(1, 1) — one of the optimal 2-paths is the following: 1→2→4→5→4→2→3→2→11 \rightarrow 2 \rightarrow 4 \rightarrow 5 \rightarrow 4 \rightarrow 2 \rightarrow 3 \rightarrow 2 \rightarrow 1. Pr(p)=(a1+a2+a3+a4+a5)−(2⋅w(1,2)+2⋅w(2,3)+2⋅w(2,4)+2⋅w(4,5))=21−2⋅12=9\text{Pr}(p) = (a_1 + a_2 + a_3 + a_4 + a_5) - (2 \cdot w(1,2) + 2 \cdot w(2,3) + 2 \cdot w(2,4) + 2 \cdot w(4,5)) = 21 - 2 \cdot 12 = 9.
  2. (4,4)(4, 4): 4→2→1→2→3→2→44 \rightarrow 2 \rightarrow 1 \rightarrow 2 \rightarrow 3 \rightarrow 2 \rightarrow 4. Pr(p)=(a1+a2+a3+a4)−2⋅(w(1,2)+w(2,3)+w(2,4))=19−2⋅10=9\text{Pr}(p) = (a_1 + a_2 + a_3 + a_4) - 2 \cdot (w(1,2) + w(2,3) + w(2,4)) = 19 - 2 \cdot 10 = 9.
  3. (5,6)(5, 6): 5→4→2→3→2→1→2→4→65 \rightarrow 4 \rightarrow 2 \rightarrow 3 \rightarrow 2 \rightarrow 1 \rightarrow 2 \rightarrow 4 \rightarrow 6.
  4. (6,4)(6, 4): 6→4→2→1→2→3→2→46 \rightarrow 4 \rightarrow 2 \rightarrow 1 \rightarrow 2 \rightarrow 3 \rightarrow 2 \rightarrow 4.
  5. (3,4)(3, 4): 3→2→1→2→43 \rightarrow 2 \rightarrow 1 \rightarrow 2 \rightarrow 4.
  6. (3,7)(3, 7): 3→2→1→2→4→5→4→2→3→73 \rightarrow 2 \rightarrow 1 \rightarrow 2 \rightarrow 4 \rightarrow 5 \rightarrow 4 \rightarrow 2 \rightarrow 3 \rightarrow 7.

查询解释:

  1. (1,1)(1, 1) — 其中一条最优的 2-路径如下:1→2→4→5→4→2→3→2→11 \rightarrow 2 \rightarrow 4 \rightarrow 5 \rightarrow 4 \rightarrow 2 \rightarrow 3 \rightarrow 2 \rightarrow 1。Pr(p)=(a1+a2+a3+a4+a5)−(2⋅w(1,2)+2⋅w(2,3)+2⋅w(2,4)+2⋅w(4,5))=21−2⋅12=9\text{Pr}(p) = (a_1 + a_2 + a_3 + a_4 + a_5) - (2 \cdot w(1,2) + 2 \cdot w(2,3) + 2 \cdot w(2,4) + 2 \cdot w(4,5)) = 21 - 2 \cdot 12 = 9。
  2. (4,4)(4, 4):4→2→1→2→3→2→44 \rightarrow 2 \rightarrow 1 \rightarrow 2 \rightarrow 3 \rightarrow 2 \rightarrow 4。Pr(p)=(a1+a2+a3+a4)−2⋅(w(1,2)+w(2,3)+w(2,4))=19−2⋅10=9\text{Pr}(p) = (a_1 + a_2 + a_3 + a_4) - 2 \cdot (w(1,2) + w(2,3) + w(2,4)) = 19 - 2 \cdot 10 = 9。
  3. (5,6)(5, 6):5→4→2→3→2→1→2→4→65 \rightarrow 4 \rightarrow 2 \rightarrow 3 \rightarrow 2 \rightarrow 1 \rightarrow 2 \rightarrow 4 \rightarrow 6。
  4. (6,4)(6, 4):6→4→2→1→2→3→2→46 \rightarrow 4 \rightarrow 2 \rightarrow 1 \rightarrow 2 \rightarrow 3 \rightarrow 2 \rightarrow 4。
  5. (3,4)(3, 4):3→2→1→2→43 \rightarrow 2 \rightarrow 1 \rightarrow 2 \rightarrow 4。
  6. (3,7)(3, 7):3→2→1→2→4→5→4→2→3→73 \rightarrow 2 \rightarrow 1 \rightarrow 2 \rightarrow 4 \rightarrow 5 \rightarrow 4 \rightarrow 2 \rightarrow 3 \rightarrow 7。

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

首页