luogu#P10011. [集训队互测 2023] 网格图最大流计数

[集训队互测 2023] 网格图最大流计数

题目描述

给定 n,m,kn,m,k,和两个正整数序列 a1...n,b1...ma_{1...n},b_{1...m},以及一个 k×kk\times k0101 矩阵 s1...k,1...ks_{1...k,1...k}

考虑一张有向图 G=(V,E)G=(V,E),其中 $V=\{S,T\}\cup(\{0,1\}\times ([1,k]\cap\mathbb{Z})^2)$,而 E=E1E2E3E=E_1\cup E_2\cup E_3 由三部分组成:

  • $E_1=\{(S,(0,1,a_i)) \mid 1\le i\le n\}\cup\{((1,k,b_i),T)\mid 1\le i\le m\}$
  • $E_2=\{((1,i,j),(0,i+1,j))\mid1\le i<k,1\le j\le k\}\cup \{(1,i,j),(0,i,j+1))\mid1\le i\le k,1\le j<k\}$
  • $E_3=\{((0,i,j),(1,i,j))\mid 1\le i,j\le k,s_{i,j}=1\}$

简单来说,你可以看成每个格子 (i,j),1i,jk(i,j),1\le i,j\le k 被拆成了一个入点 (0,i,j)(0,i,j) 和一个出点 (1,i,j)(1,i,j)E1E_1 描述了 S,TS,T 与这些点之间的边,由 a,ba,b 决定;E2E_2 描述了每个格子的出点连向它上方和右方格子的入点的边;E3E_3 描述了每个格子的入点连向出点的边,由 ss 决定。

现在我们将 GG 看成一个网络,每条边的容量是 11。你需要求出以 SS 为源点,以 TT 为汇点的最大流,以及最大流的数量(两个流被认为是不同的,当且仅当存在一条边在两个流中的流量不同)。

输入格式

第一行三个正整数 n,m,kn,m,k

第二行 nn 个正整数 1a1<a2<...<ank1\le a_1<a_2<...<a_n\le k

第三行 mm 个正整数 1b1<b2<...<bmk1\le b_1<b_2<...<b_m\le k

接下来 kk 行,每行一个长度为 kk 的 01 字符串,表示矩阵 ss

输出格式

输出一行两个非负整数,分别表示最大流和最大流的数量,后者对 109+710^9+7 取模。

提示

样例见下发文件。

对于全部数据,1n,mk4001\le n,m\le k\le400

子任务编号 nn\le kk\le 特殊性质 子任务分值
11 77 55
22 1818
33 1010 400400 1010
44 100100 2525
55 400400 n=mn=m 且最大流为 nn 1010
66 最大流为 nn 2525
77 2020