[BalticOI 2020 Day2] 图
题目描述
你有一个无向图,每条边都有一种颜色:红或者黑。
你要做的就是为每个节点配一个实数点权,使得:
- 对于每条黑色边,两个端点的点权之和为 $1$
- 对于每条红色边,两个端点的点权之和为 $2$
- 所有点权的绝对值之和是最小的
求一种点权的分配方案。
输入输出格式
输入格式
第一行两个整数 $N,M$ 代表点数和边数。
所有点的编号为 $1$ 到 $N$。
接下来 $M$ 行每行三个整数 $a,b,c$ 描述一条边端点为 $a$ 和 $b$,如果 $c$ 是 $1$ 那么这条边是黑色边,如果 $c$ 是 $2$ 那么这条边是红色边。
输出格式
如果有解,首先第一行输出 `YES`,然后第二行 $N$ 个整数代表可能的一组点权。
多组解输出任意一组即可。
如果无解,一行一个字符串 `NO`。
输入输出样例
输入样例 #1
4 4
1 2 1
2 3 2
1 3 2
3 4 1
输出样例 #1
YES
0.5 0.5 1.5 -0.5
输入样例 #2
2 1
1 2 1
输出样例 #2
YES
0.3 0.7
输入样例 #3
3 2
1 2 2
2 3 2
输出样例 #3
YES
0 2 0
输入样例 #4
3 4
1 2 2
2 2 1
2 1 1
1 2 2
输出样例 #4
NO
说明
#### 评测方式
您的输出被评判为正确,当且仅当:
- 每条边所连两点的点权和与该边要求的点权间的误差不超过 $10^{-6}$。
- 所有点权的绝对值之和与标准答案误差不超过 $10^{-6}$。
#### 数据规模与约定
**本题采用捆绑测试。**
- Subtask 1(5 pts):$N \le 5$,$M \le 14$。
- Subtask 2(12 pts):$N \le 100$。
- Subtask 3(17 pts):$N \le 1000$。
- Subtask 4(24 pts):$N \le 10^4$。
- Subtask 5(42 pts):无特殊限制。
对于 $100\%$ 的数据,$1 \le N \le 10^5$,$0 \le M \le 2 \times 10^5$。
**本题使用 Special Judge。**