农场主John将他的 K(1≤K≤30) 个挤奶器运到牧场,在那里有 C(1≤C≤200) 头奶牛,在奶牛和挤奶器之间有一组不同长度的路。K 个挤奶器的位置用 1~K 的编号标明,奶牛的位置用 K+1~K+C 的编号标明。每台挤奶器每天最多能为 M(1≤M≤15) 头奶牛挤奶。 编写程序,寻找一个方案,安排每头奶牛到某个挤奶器挤奶,并使得 C 头奶牛需要走的所有路程中的最大路程最小。每个测试数据中至少有一个安排方案。每头奶牛到挤奶器有多条路。
输入
测试数据的格式如下。第 1 行为 3 个整数 K、C 和 M。 第 2~K+C+1 行,描述了奶牛和挤奶器(二者合称实体)之间的距离,每行有 K+C 个整数,这 K+C 行构成了一个沿对角线对称的矩阵。第 2 行描述了第 1 个挤奶器距离其他实体的距离……第 K+1 行描述了第 K 个挤奶器距离其他实体的距离;第 K+2 行描述了第 1 头奶牛距离其他实体的距离……这些距离为不超过 200 的正数。实体之间如果没有直接路径相连,则距离为 0。实体与本身的距离(即对角线上的整数)也为 0。
输出
输出一个整数,为所有方案中C头奶牛需要走的最大距离的最小值。
样例
| 标准输入 复制文本 |
2 3 2 0 3 2 1 1 3 0 3 2 0 2 3 0 1 0 1 2 1 0 2 1 0 0 2 0 |
| 标准输出 复制文本 |
2 |