2337. [图论基础与应用]核反应堆的冷却系统

反应堆的冷却系统包含许多管子,管子里流动的是用来冷却用的特殊液体。管子通过结点相连,每根管子有一个起点、一个终点,冷却液只能从起点流向终点,不能逆向流动。结点的编号从 1N。冷却系统必须设计得让冷却液体能循环流动,对每个结点,流入结点的流量等于流出结点的流量。即如果用 f_{i,j} 来标明从结点 i 流向结点 j 的流量(如果从结点 i 到结点 j 没有管子,则 f_{i,j}=0),对每个结点 i,都满足以下条件。

f_{i, 1} + f_{i, 2} + L + f_{i, N} = f{1, i} + f_{2, i} + L + f_{N, i}

每根管子都有有限容量,因此对连接结点i和结点j的管子,必须满足 f_{i,j}≤C_{i,j},其中 C_{i,j} 是管子的容量。为提供足够的冷却液,f_{i,j} 还有一个最低流量的限制,即f_{i,j}≥L_{i,j}。 给定所有管子的C_{i,j}L_{i,j},求满足以上条件的流量f_{i,j}

输入

输入文件包含多个测试数据。输入文件的第 1 行为整数 T,接下来是一个空行,然后是 T 个测试数据。每两个测试数据之间有一个空行。每个测试数据的格式如下。 每个测试数据的第 1 行为两个整数 NM (1≤N≤200),其中 N 表示结点的数目,M 表示管子的数目。接下来有 M 行,每行描述了一根管子,每行为 4 个整数 ijL_{i,j}C_{i,j}0≤L_{i,j}≤C_{i,j}≤105。任意两个结点之间最多有一根管子,没有管子连自结点本身。如果存在一根从结点 i 流向结点 j 的管子,那么就没有从结点 j 流向结点 i 的管子。

输出

对每个测试数据,如果存在满足条件的流量 f_{i,j},输出“YES”,否则输出“NO”;前一种情形还要输出 M 个整数,第 k 个整数为第 k 根管子的流量,管子的序号为输入时的序号。 每个测试数据的输出之后输出一个空行。

样例

标准输入 复制文本
2

4 6
1 2 1 2
2 3 1 2
3 4 1 2
4 1 1 2
1 3 1 2
4 2 1 2

4 6
1 2 1 3
2 3 1 3
3 4 1 3
4 1 1 3
1 3 1 3
4 2 1 3
标准输出 复制文本
NO

YES
1
2
3
2
1
1
登录以提交代码。
单点时限 1 秒
内存限制 256 MB
提交 1
通过 1