题目描述
给定一张二分图,左侧有 $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.in
与 qiandao/qiandao3.ans
。
样例 4
见选手目录下的 qiandao/qiandao4.in
与 qiandao/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$ |
提示
本题输入量较大,请使用较快的读入方式。