#1452. 分书问题

分书问题

题目描述

分书问题是指:已知 nn 个人对 mm 本书的喜好(nmn \le m),现要将 mm 本书分给 nn 个人,每个人只能分到 11 本书,每本书也最多只能分给 11 个人,并且还要求每个人都能分到自己喜欢的书。列出所有满足要求的方案。

本题请你对任意 nnmm 尝试列出全部的解。

输入格式: 输入第一行给出两个正整数 nnmm (nm8)(n \le m \le 8),即分书问题中的人数和书的数量。 随后 nn 行,每行给出 mm 个关系矩阵元素。其中第 ii 行第 jj 个元素为 11 表示第 ii 个人喜欢第 jj 本书,为 00 则表示不喜欢。

输出格式:

按升序列出所有满足要求的方案 每行输出 nn 个数 s1,s2sns_1,s_2 \ldots s_n 其中 sis_i 表示第 ii 个人分到了第 sis_i 本书。

注:方案 (a1,,an)(a_1 , \ldots ,a_n​ ) < (b1,,bn)(b_1​,⋯,b_n) 是指存在 1kn1 \le k \le n ,使得 ai=bi a_i = b_i 对所有 1ik1 \le i \le k 成立,并且有 ak<bka_k \lt b_k

输入样例:

4 5
0 1 0 0 1
1 1 0 1 0
1 0 1 1 0
0 0 0 1 1

输出样例:

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

限制与约定

对于 50%50\% 的数据,2nm5 2 \le n \le m \le 5

对于 100%100\% 的数据,2nm8 2 \le n \le m \le 8, 保证每一行至少存在一个 11

  • 时间限制: 1s1 s
  • 空间限制: 256MB256 MB