#P12724. [KOI 2021 Round 2] 图的平衡
[KOI 2021 Round 2] 图的平衡
题目背景
试题来源:https://koi.or.kr/archives/。中文翻译做了少量本土化修改。
按照署名—非商业性使用—相同方式共享 4.0 协议国际版进行授权。
题目描述
给定一个包含 个顶点和 条边的无向简单连通图。图中的顶点编号为 到 的互不相同的自然数,边的编号为 到 的互不相同的自然数。
第 条边()连接编号为 和 的两个顶点,边的权值为整数 。
你需要为每个顶点分配一个整数权值。设第 个顶点()的权值为 。
对所有顶点所分配权值的总代价定义为这些权值的绝对值之和,即:
$$|x_1| + |x_2| + \cdots + |x_N| = \sum_{i=1}^{N} |x_i| $$如果要使图保持平衡,则每一条边连接的两个顶点的权值之和必须等于该边的权值。也就是说,对于所有 (),应满足:
例如,考虑下图中的一个图,它包含 5 个顶点和 4 条边。在图中,圆圈内的数字表示顶点编号,边上的数字表示边的权值。
如果按照下图所示,为各顶点分配权值为 ,则每一条边连接的两个顶点的权值之和均等于对应边的权值。图中每个圆圈中的数字即为该顶点的权值
该分配方式的总代价为:
$$|2| + |-7| + |3| + |-5| + |0| = 2 + 7 + 3 + 5 + 0 = 17 $$这是最小可能总代价。
例如,若将各顶点权值设为 ,尽管此时图仍满足平衡条件,但总代价变为:
$$|6| + |-3| + |-1| + |-9| + |4| = 6 + 3 + 1 + 9 + 4 = 23 $$这显然不是最优方案。
你的任务是编写一个程序,判断是否存在某种分配方式使图保持平衡,若存在,请输出总代价最小的一种分配方式之一。
输入格式
第一行包含两个整数 和 ,用一个空格分隔。
接下来 行,每行包含三个整数 、、,表示一条边的连接情况和其权值。各整数之间用空格分隔。
输出格式
若存在一种方式为图中每个顶点分配整数权值,使得图保持平衡,则输出:
- 第一行输出
Yes
(不区分大小写) - 第二行输出 个整数 ,用空格分隔,表示每个顶点的权值。若有多种满足条件的最小总代价方案,可任选其一输出。
若不存在任何一种满足条件的分配方式,则输出:
- 一行输出
No
(不区分大小写)
3 3
1 2 5
2 3 4
3 1 3
Yes
2 3 1
5 4
1 3 5
2 3 -4
4 2 -12
5 3 3
Yes
2 -7 3 -5 0
提示
约束条件
- 所有给定数值均为整数。
- 对所有 (),满足:
- (不存在连接同一顶点的边)
- 对所有 (),满足 (任意两个顶点对之间至多存在一条边)
- 图是连通的,即任意两个顶点之间都存在路径相连。
子任务
- (6 分) 且 ,三条边分别连接顶点 1-2、2-3、3-1
- (10 分) 且 ,第 条边连接顶点 和
- (11 分) 且第 条边连接顶点 和
- (12 分)
- (13 分) 且每个顶点连接恰好两条不同的边
- (29 分)
- (19 分)无额外约束条件。