#L5346. 「POI2008 R2」逃亡 The Great Escape

    ID: 4861 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>动态规划数据结构前缀和状态压缩

「POI2008 R2」逃亡 The Great Escape

题目描述

题目译自 XV OI Olimpiada Informatyczna – II etap Ucieczka

拜托城街道为矩形网格,Al 从银行所在的虚拟点 (1,n+1)(1, n+1) 出发,向北进入交叉口 (1,n)(1, n),需逃往藏身处 (x,y)(x, y),路径需满足:

  1. 仅允许直行或右转,禁止左转;
  2. 不可重复经过任一交叉口;
  3. 避开有警力巡逻的交叉口(标记为 *),仅可通行标记为 + 的交叉口(银行和藏身处所在交叉口无巡逻)。

需计算满足条件的路径总数,并输出其对 kk 取模的结果。

输入格式

  1. 第一行:三个整数 n,m,kn, m, k1n,m1001 \leq n, m \leq 1001k1091 \leq k \leq 10^9),分别表示东西向街道数、南北向街道数、模数;
  2. 第二行:两个整数 x,yx, y1xm1 \leq x \leq m1yn1 \leq y \leq n),表示藏身处位于第 xx 条南北街与第 yy 条东西街的交叉口;
  3. 接下来 nn 行:每行 mm 个字符(*+),第 ii 行第 jj 列表示第 ii 条东西街与第 jj 条南北街的交叉口状态(东西街从北向南编号 1~n,南北街从西向东编号 1~m)。

输出格式

输出一行整数,表示满足条件的路径总数对 kk 取模的结果。

样例

输入

3 5 10
4 2
+++++ 
++*++  
++++*  

输出

2