AT_kupc2017_j Paint Red and Make Graph
题目描述
给你一个 $H$ 行 $W$ 列的棋盘。每个格子最初被染成白色或者黑色,若 $a_{i,j}$ 是 `.`,则表示第 $i$ 行第 $j$ 列的格子是白色;若 $a_{i,j}$ 是 `#`,则该格子是黑色。你的任务是将一些白色格子涂成红色,并满足以下条件:
- 每一行和每一列至少要有一个红色格子。
- 构建一个图,使其满足:
- 为每个红色格子创建一个顶点(因此,顶点数与红色格子数相等)。
- 在同一行或同一列上的红色格子对应的顶点之间连一条边。
- 整个图要保持连通。
请找到白色格子涂成红色的最少数量,并计算出这种情况下的所有方案数,答案对 $10^9 + 7$ 取模。如果没有符合条件的方案,输出 `-1`。
输入格式
输入是标准输入,格式如下:
> $H$ $W$
> $a_{1,1}$ $\ldots$ $a_{1,W}$
> ...
> $a_{H,1}$ $\ldots$ $a_{H,W}$
输出格式
输出一行,包括两个整数:第一个是最小化后需要涂成红色的格子数,第二个是所有满足条件的方案数对 $10^9 + 7$ 取模的结果。如果无解,输出 `-1`。
说明/提示
- $1 \leq H \leq 10^4$
- $1 \leq W \leq 50$
- $H$ 和 $W$ 均为整数。
- $a_{i,j}$ 为 `.` 或 `#`。
**本翻译由 AI 自动生成**