CF546E Soldier and Traveling

题目描述

某个国度中有着 $n$ 座城市和 $m$ 条双向道路。$i$ 号城市中有着 $a_i$ 个士兵。现在士兵可以移动,每个士兵可以选择待在原地或者沿着**一条**双向道路走到一个**相邻的**城市。 问:给定数列 $b$,一轮移动后能不能满足对于每个城市 $i$,里边的士兵数是 $b_i$?如果可以,你需要给出士兵的移动方案。

输入格式

第一行两个整数 $n,m(1\le n\le 100,0\le m\le 200)$。\ 第二行 $n$ 个整数 $a_1,a_2,\cdots,a_n(0\le a_i\le 100)$。\ 第三行 $n$ 个整数 $b_1,b_2,\cdots,b_n(0\le b_i\le 100)$。\ 接下来 $m$ 行,每行两个整数 $p,q$,表示一条连接城市 $p$ 和城市 $q$ 的边。 保证没有重边和自环。

输出格式

如果无解,输出一个字符串 `NO`。 否则,第一行输出一个字符串 `YES`,接下来 $n$ 行,每行输出 $n$ 个数,第 $i$ 行的第 $j$ 个数为你构造的方案中,移动后在城市 $j$ 的士兵有多少名来自城市 $i$。 如果有多种解,输出任意一种均可。

说明/提示

Translated by @[Epiphyllumthief ](/user/45212), Updated by @[chenxi2009](/user/1020063)