#6678. 任务分配

任务分配

题面:任务分配

时间限制: 1 秒 内存限制: 256 MB

n 个人和 n 个任务。

i 个人完成第 j 个任务的代价为 c[i][j]

现在需要给每个任务恰好分配一个人,并且每个人最多只能完成一个任务。

请你计算完成所有任务所需的最小总代价。

输入格式

第一行包含一个整数 n

接下来 n 行,每行包含 n 个整数。第 i 行第 j 个整数表示第 i 个人完成第 j 个任务的代价 c[i][j]

输出格式

输出一个整数,表示最小总代价。

数据范围

1 <= n <= 10
0 <= c[i][j] <= 10^6

样例

输入

2
3 7
1 4

输出

7

说明

有两种分配方式:

任务 1 分给第 1 个人,任务 2 分给第 2 个人,总代价为 3 + 4 = 7
任务 1 分给第 2 个人,任务 2 分给第 1 个人,总代价为 1 + 7 = 8

因此最小总代价为 7

测试点说明表

测试点编号 n ≤ c[i][j] ≤ 特殊性质 设计目的
1 5 单人单任务 覆盖最小规模
2 2 7 样例数据 对应原程序固定矩阵,答案为 7
3 100 对角线最优 检查基础分配选择
4 3 9 普通矩阵 覆盖小规模全排列搜索
5 5 0 代价 覆盖低代价任务分配
6 4 19 中等规模经典矩阵 覆盖多任务最优匹配
7 9 代价接近 检查细微差异下的最优解
8 5 20 对角线明显最优 覆盖强剪枝场景
9 9 较复杂矩阵 覆盖较大排列空间
10 6 极限 n 覆盖最大规模 DFS 分配