#icpc2016autumnh. [icpc2016autumn_h]Pipe Fitter and the Fierce Dogs

[icpc2016autumn_h]Pipe Fitter and the Fierce Dogs

问题陈述

你作为国际管道连接社区(ICPC)的一名自豪的管道工,承担了一项新任务。你负责的管道工作区域是一个长宽分别为 WWHH 的矩形。我们将西到东的第 ii 个方块和北到南的第 jj 个方块称为 (i,j)(i, j)。最西边和最北边的方块是 (1,1)(1,1),最东边和最南边的方块是 (W,H)(W,H)。为了使这个区域成为一个美丽的景色,方块 (i,j)(i, j) 只有在 iijj 都是奇数时才有房屋。

你的任务是在该区域内建立一个供水管网,以便通过网络为该区域内的每个房屋提供水源。一个供水管网由管道组成。一个管道由一个或多个水管连接而成,具有 ll 条水管的管道的构造如下:

  1. 选择一个起始的房屋,用一个 特殊管道 将该房屋连接到地下水源。
  2. 选择第 ii 个房屋 (2il2 \le i \le l),将第 ii 个房屋与第 (i1)(i-1) 个房屋用一个 普通管道 连接起来。在这种情况下,由于区域是倾斜的,选择一个下一个 ii 房屋有一定条件。设 (x,y)(x,y) 是第 (i1)(i-1) 个房屋所在方块。则第 ii 个房屋必须位于 (x2,y+2)(x-2, y+2)(x,y+2)(x, y+2)(x+2,y+2)(x+2, y+2) 中的一个位置。连接两个房屋的普通管道必须位于 (x1,y+1)(x-1,y+1)(x,y+1)(x,y+1)(x+1,y+1)(x+1,y+1) 中的一个位置。

此外,在建立多个管道时,你还需要注意以下事项:

  • 每个房屋恰好通过一个管道供水。
  • 一个方块可以容纳多个水管。

在你的任务中,普通管道是相同的,因此你可以使用任意数量的普通管道。另一方面,特殊管道是特殊的,因此在这个任务中可用的特殊管道数量受到 ICPC 规定的限制。

除了可用特殊管道的限制外,还有另一个妨碍你的管道工作的因素:凶猛的狗。一些没有房屋的方块似乎是凶猛狗的家。每只狗总是待在它的家所在的方块。由于一些狗不能居住在与其家相同的方块上,你可以假设每个方块只有一只狗,或者没有狗。

下面的图示是一个 5×55 \times 5 区域内一个含有 4 条特殊管道的供水管网的示例。这对应于第一个样例。

水管网络示例

作为一名自豪的管道工,你希望尽快完成这个任务。幸运的是,你获得了一份含有狗的家所在方块的清单。在成为一名管道工之前,你经常参加程序设计竞赛。因此,你决定编写一个程序来确定是否可以构建一个供水管网,使得通过有限数量的特殊管道能够为每个房屋提供水源,并且如果可以的话,计算建立它所需的最小总时间成本。

输入

输入包含一个单独的测试用例。

WW HH KK
NN
x_1x\_{1} y_1y\_{1}
...
x_Nx\_{N} y_Ny\_{N}

一个测试用例中的所有数字都是整数。第一行包含三个整数 WWHHKKWWHH 表示矩形区域的大小。WW 是从西到东的方块数目 (1W<10,0001 \le W < 10{,}000),HH 是从北到南的方块数目 (1H<10,0001 \le H < 10{,}000)。WWHH 必须是奇数。KK 是你在该任务中可以使用的特殊管道的数量 (1K100,000,0001 \le K \le 100{,}000{,}000)。第二行包含一个整数 NN (0N100,0000 \le N \le 100{,}000),表示该区域内狗的数量。接下来的 NN 行中,每行包含两个整数 xix_iyiy_i,表示第 ii 只凶猛狗的家所在方块为 (xi,yi)(x_i, y_i)。这些数字满足以下条件:

  • 1xiW1 \le x_i \le W1yiH1 \le y_i \le H
  • xix_iyiy_i 中至少有一个是偶数。
  • iji \neq j 时,(xi,yi)(xj,yj)(x_i, y_i) \neq (x_j, y_j)。即,两只或更多的狗不在同一个方块上。

输出

如果我们能够构建一个供水管网,使得通过有限数量的特殊管道可以为每个房屋提供水源,则输出建造它所需的最小总时间成本。如果不能,则输出 -1。

样例输入 1

5 5 4
6
3 2
4 2
5 2
1 4
3 4
5 4```

### 样例输出 1

```plain
6```

### 样例输入 2

```plain
5 3 1
0```

### 样例输出 2

```plain
-1```

### 样例输入 3

```plain
9 5 100
5
2 1
1 2
3 4
4 3
2 2```

### 样例输出 3

```plain
0```

### 样例输入 4

```plain
5 5 3
4
1 2
5 2
1 4
5 4```

### 样例输出 4

```plain
8```

### 样例输入 5

```plain
9 5 5
10
2 1
2 2
3 2
5 2
8 2
4 3
2 4
3 4
5 4
8 4```

### 样例输出 5

```plain
10```