P14122 [SCCPC 2021] Direction Setting

题目描述

给定一个包含 $n$ 个顶点和 $m$ 条边的无向图,第 $i$ 个顶点有一个限制 $a_i$。请为每条边分配一个方向,使得整个图变为有向图,并且使下述值 $D$ 最小: $$ D = \sum\limits_{i=1}^n \max(0, d_i - a_i) $$ 其中 $d_i$ 表示第 $i$ 个顶点的入度(即指向该顶点的边的条数)。

输入格式

存在多组测试数据。输入的第一行为一个整数 $T$,表示测试数据组数。对于每组测试数据: 第一行包含两个整数 $n$ 和 $m$($2 \le n \le 300$,$1 \le m \le 300$),表示顶点数和边数。 第二行包含 $n$ 个整数 $a_1, a_2, \cdots, a_n$($0 \le a_i \le 10^4$),其中 $a_i$ 表示第 $i$ 个顶点的限制。 接下来的 $m$ 行,每行包含两个整数 $u_i$ 和 $v_i$($1 \le u_i, v_i \le n$),表示有一条边连接顶点 $u_i$ 和 $v_i$。注意可能存在自环或重边。 保证所有测试数据中 $n$ 与 $m$ 的总和不超过 $3\times10^3$。

输出格式

对于每组测试数据输出两行。第一行输出一个整数,表示最小的 $D$。第二行输出一个长度为 $m$ 的字符串 $s_1s_2\cdots s_m$,仅包含字符 `0` 和 `1`,表示每条边的定向分配方案以达到最小的 $D$。如果 $s_i = \text{`0'}`,则第 $i$ 条边从 $u_i$ 指向 $v_i$;否则从 $v_i$ 指向 $u_i$。如果存在多组合法方案,可以输出任意一种。

说明/提示

第一个样例测试数据如图所示: :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/bzs230id.png) ::: 由 ChatGPT 5 翻译