Logo Universal Online Judge

UOJ

时间限制:1 s 空间限制:256 MB

#3040. 签到题

统计

题目描述

给定一张二分图,左侧有 $n$ 个点,编号为 $1$ 到 $n$,右侧有 $m$ 个点,编号为 $1$ 到 $m$,有 $k$ 条无向边。
给定 $c$,你需要将每条边染色为 $[1, c]$ 中的一种颜色。
现在,对于第 $i$ 个点,我们定义它的代价为与 $i$ 点相连的边中,出现最多的颜色数减去出现最少的颜色数(如果一种颜色没有出现,我们认为它的出现次数为 $0$)。
你需要构造一种方案,使得每个点的代价和最小。

输入格式

从文件 qiandao.in 中读入数据。
输入共 $(k + 1)$ 行。
第一行四个正整数 $n, m, k, c$,含义与【题目描述】中相同。
接下来 $k$ 行,每行两个整数 $u_i, v_i$,按顺序表示左侧编号为 $u_i$ 的点与右侧编号为 $v_i$ 的点有一条边。

输出格式

输出到文件 qiandao.out 中。
一行一个非负整数,表示每个点的代价和的最小值。

样例

样例 1 输入

3 2 4 2
1 1
3 2
2 1
1 2

样例 1 输出

2

样例 1 解释

4 条边分别染色为 $1, 1, 2, 2$ 时,左侧第 $2, 3$ 个点的代价为 $1$,其余点代价为 $0$,总代价为 $2$。可以发现没有代价更小的染色方案。

样例 2 输入

3 2 5 2
1 1
3 2
2 1
1 1
1 2

样例 2 输出

4

样例 3

见选手目录下的 qiandao/qiandao3.inqiandao/qiandao3.ans

样例 4

见选手目录下的 qiandao/qiandao4.inqiandao/qiandao4.ans

测试点约束

对于所有测试点,满足 $n, m \geq 1$,$n + m \leq 10^6$,$1 \leq k \leq 10^6$,$1 \leq c \leq 10^5$,$1 \leq u_i \leq n$,$1 \leq v_i \leq m$。

每个子任务的具体限制见下表:

子任务编号 分值 $n + m$ $k$ $c$
1 5 $\leq 10^6$ $\leq 10^6$ $= 1$
2 15 $= 20$ $= 2$
3 30 $\leq 2000$ $\leq 1000$ $\leq 1000$
4 50 $\leq 10^6$ $\leq 10^6$ $\leq 10^5$

提示

本题输入量较大,请使用较快的读入方式。