#P6696. [BalticOI 2020 Day2] 图

[BalticOI 2020 Day2] 图

题目描述

你有一个无向图,每条边都有一种颜色:红或者黑。

你要做的就是为每个节点配一个实数点权,使得:

  • 对于每条黑色边,两个端点的点权之和为 11
  • 对于每条红色边,两个端点的点权之和为 22
  • 所有点权的绝对值之和是最小的

求一种点权的分配方案。

输入格式

第一行两个整数 N,MN,M 代表点数和边数。
所有点的编号为 11NN
接下来 MM 行每行三个整数 a,b,ca,b,c 描述一条边端点为 aabb,如果 cc11 那么这条边是黑色边,如果 cc22 那么这条边是红色边。

输出格式

如果有解,首先第一行输出 YES,然后第二行 NN 个整数代表可能的一组点权。
多组解输出任意一组即可。
如果无解,一行一个字符串 NO

4 4
1 2 1
2 3 2
1 3 2
3 4 1
YES
0.5 0.5 1.5 -0.5
2 1
1 2 1
YES
0.3 0.7
3 2
1 2 2
2 3 2
YES
0 2 0
3 4
1 2 2
2 2 1
2 1 1
1 2 2
NO

提示

评测方式

您的输出被评判为正确,当且仅当:

  • 每条边所连两点的点权和与该边要求的点权间的误差不超过 10610^{-6}
  • 所有点权的绝对值之和与标准答案误差不超过 10610^{-6}

数据规模与约定

本题采用捆绑测试。

  • Subtask 1(5 pts):N5N \le 5M14M \le 14
  • Subtask 2(12 pts):N100N \le 100
  • Subtask 3(17 pts):N1000N \le 1000
  • Subtask 4(24 pts):N104N \le 10^4
  • Subtask 5(42 pts):无特殊限制。

对于 100%100\% 的数据,1N1051 \le N \le 10^50M2×1050 \le M \le 2 \times 10^5

本题使用 Special Judge。