「CMOI R1」图上交互题 / Constructive Minimum Xor Path
题目背景
2024 年 1 月 13 日 15:59:31,随着最后一发交互 J 题的提交出现了 Wrong Answer,小 G 的 EC-Final 比赛结束了,也意味着在 ICPC 生涯中第一次打铁。
痛定思痛,小 G 决定批量生产交互题给自己做。如何批量生产交互题?只要在一个数据结构中有若干个未知量 $a_i$,每次询问给定向量 $x$,交互库会返回关于 $a_i$ 的函数 $f(x)$,这样就能批量生产交互题了!
~~那为什么这题并不是交互题呢。~~
题目描述
给定一个 $n$ 个点,$m$ 条边的**无向图**。第 $i$ 条边 $(u_i,v_i)$ 有一个**未知边权** $a_i$。
对于任何一条**路径**,定义其**代价**如下:设路径为 $(p_0,p_1,...,p_k)$,其中要求 $(p_{i-1},p_i)$ 是无向图中的边,设其为第 $e_i$ 条边。那么路径的代价即为 $\bigoplus\limits_{i=1}^{k} a_{e_i}$。其中 $\bigoplus$ 表示异或。(该路径可以经过重复点和重复边,即 $p$ 和 $e$ 可以包含重复的数)
定义 $f(x,y)$ 为从 $x$ 到 $y$ 的所有路径中代价的**最小值**。特别地,当 $x=y$ 时,$f(x,y)=0$。
给定 $n,m$,再对于每条边 $(u_i,v_i)$ 给定 $f(u_i,v_i)$,你需要求出是否存在一组合法的 $a_i$,如果有解,你还需要构造一组解。
输入输出格式
输入格式
第一行两个正整数 $n,m$。
第 $2\sim m+1$ 行每行两个正整数 $u_i,v_i$ 和一个非负整数 $f(u_i,v_i)$。
**请注意:本题并不保证图连通;可能会存在重边和自环。**
输出格式
如果不存在解,则仅输出 `No`。
否则,在第一行输出 `Yes`,在第二行输出 $m$ 个非负整数 $a_i$ 表示一组合法的解。
答案可能有很多组,此时输出任意一组解即可。你需要保证 输出的 $0\le a_i<2^{63}$。
输入输出样例
输入样例 #1
3 3
1 2 2
2 3 3
3 1 1
输出样例 #1
Yes
2 3 114514
输入样例 #2
1 1
1 1 1
输出样例 #2
No
说明
### 样例解释
答案输出的图如下:
![](https://cdn.luogu.com.cn/upload/image_hosting/mq5jwia3.png)
考虑 $f(1,2)$:
+ 考虑路径 $1\rightarrow 2$,路径的代价为 $2$。
+ 考虑路径 $1\rightarrow 2\rightarrow 3\rightarrow 1\rightarrow 2$,路径的代价为 $2\oplus3\oplus114514\oplus2=114513$。
此外还存在其他路径,但可以证明不存在代价比 $2$ 更小的路径,故 $f(1,2)=2$。
### 数据范围
**本题采用捆绑测试。**
|$\text{Subtask}$ |特殊性质|分数|
|-:|-:|-:|
|$1$|保证有解|$20$|
|$2$|$m\le n+10$|$30$|
|$3$||$50$|
对于 $100\%$ 的数据,$1\le n,m\le 5\times 10^5$,$1\le u_i,v_i\le n$,$0\le f(u_i,v_i)<2^{31}$。