CF2126F.1-1-1, Free Tree!
普及+/提高
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一棵有 n 个顶点的树(编号为 1 到 n)。每个顶点有一个初始颜色 ai。
树的每条边由三个数 ui、vi 和 ci 定义,其中 ui 和 vi 是边的两个端点,ci 是该边的参数。边的代价定义如下:如果顶点 ui 和 vi 的颜色相同,则代价为 0;否则代价为 ci。
你还会得到 q 个操作。每个操作的形式为:将顶点 v 重新染成颜色 x。这些操作是依次进行的(每次操作后的颜色变化会保留到下一次操作)。每次操作后,你需要输出当前树中所有边的总代价之和。
一棵树是一个无环连通图。
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每个测试用例的第一行包含两个整数 n 和 q(1≤n,q≤2⋅105),分别表示顶点数和操作数。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤n),表示每个顶点的初始颜色。
接下来的 n−1 行,每行三个整数 u、v、c,表示一条连接顶点 u 和 v 的边,参数为 c(1≤u,v≤n,1≤c≤109)。
接下来的 q 行,每行两个整数 v 和 x,表示将顶点 v 重新染成颜色 x(1≤v,x≤n)。
保证所有测试用例中 n 的总和和 q 的总和不超过 2⋅105。
输出格式
对于每个操作,输出一个整数,表示执行该操作后树中所有边的总代价。每个答案占一行。
输入输出样例
输入#1
4 1 1 1 1 1 2 3 1 1 1 2 10 1 2 2 2 1 1 5 4 1 2 1 2 3 1 2 5 2 3 3 2 4 4 4 5 7 3 2 5 2 1 2 2 3 4 3 1 1 2 2 1 2 2 2 3 6 2 4 8 3 1 4 1 2 2
输出#1
0 10 0 10 12 5 0 12 8 0 16
说明/提示
第一组样例:n=1,只有一个顶点,没有边。操作:将 a1 染成 1,总代价为 0。
第二组样例:n=2,边 1−2(c=10)。操作如下:
- a1=2:颜色为 [2,1],总代价为 10;
- a2=2:颜色为 [2,2],总代价为 0;
- a1=1:颜色为 [1,2],总代价为 10。
第三组样例:n=5,边为:1−2 (c=5),2−3 (c=3),2−4 (c=4),4−5 (c=7)。初始颜色 [1,2,1,2,3]。操作如下:
a3=2→[1,2,2,2,3]:边 1−2 (c=5) 和 4−5 (c=7) 贡献总代价 12;
a5=2→[1,2,2,2,2]:边 1−2 (c=5),总代价 5;
a1=2→[2,2,2,2,2]:总代价为 0;
a2=3→[2,3,2,2,2]:边 1−2 (5),2−3 (3),2−4 (4) 贡献总代价 12。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?