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

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

题目描述

给定 n,m,kn,m,k,和两个正整数序列 a1...n,b1...ma_{1...n},b_{1...m},以及一个 k×kk\times k 的 0101 矩阵 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=E1∪E2∪E3E=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),1≤i,j≤k(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 个正整数 1≤a1<a2<...<an≤k1\le a_1<a_2<...<a_n\le k。

第三行 mm 个正整数 1≤b1<b2<...<bm≤k1\le b_1<b_2<...<b_m\le k。

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

输出格式

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

提示

样例见下发文件。

对于全部数据,1≤n,m≤k≤4001\le n,m\le k\le400。

子任务编号 n≤n\le k≤k\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