CF60C Mushroom Strife
题目描述
$Pasha$ 和 $Akim$ 正在制作一张森林地图:草坪是地图的顶点,连接草坪的道路是地图的边。
他们决定通过以下方式对每个草坪上蘑菇的数量进行编码:在两个草坪之间的边上,写下两个数字,即两个草坪蘑菇数量的最大公约数和最小公倍数。
但是有一天, $Pasha$ 和 $Akim$ 争吵了起来,并撕毁了地图。
$Pasha$ 只剩下其中的一部分,共有 $m$ 条路。请帮助 $Pasha$ 使用他已知的部分地图来恢复每个草坪上的蘑菇数量。
结果不一定是唯一的,请帮助 $Pasha$ 恢复任意一张合法的地图或者判断不存在任何一种合法的地图。
保证初始地图上道路上的数字不小于 $1$ 并且不超过 $10^6$ 。
输入格式
第一行包含两个整数 $n,m(1 \leqslant n \leqslant 100,0 \leqslant m \leqslant \frac{n \times (n-1)}{2})$ ,表示已知的草坪和道路的数量。
接下来 $m$ 行,每行包含四个整数,分别是道路连接的两块草坪的编号,这些草坪上蘑菇数的 $gcd$ (最大公约数)和 $lcm$ (最小公倍数) $(1 \leqslant gcd,lcm \leqslant 10^6)$ 。
保证没有一条道路两端连接着同一块草坪,也没有两块草坪间有超过一条道路。
输出格式
第一行输出“YES”或“NO”,表示是否存在一张合法的地图。
如果答案为“YES”,则继续输出 $n$ 个用空格隔开的数字,表示相应草坪上的蘑菇数量。