Это проблема нахождения максимального соответствия в двудольном графе : строки представляют один набор вершин u_1, u_2, ..., u_N, столбцы - другой набор v_1, v_2, ..., v_N, и есть ребро u_i - v_j всякий раз, когда в позиции матрицы (i, j) есть 0.
Это может быть решено с использованием алгоритмов максимального потока, таких как Форд-Фулкерсон за O (N ^ 3) времени, или с помощью более специализированного алгоритма Хопкрофта-Карпа за O (N ^ 2.5). Фактически эти алгоритмы решают несколько более общую проблему: он найдет максимально возможный набор уникальных пар (строка, столбец), так что каждая пара имеет 0 в матрице. (В вашем случае вы знаете, что есть решение с N такими парами: это, очевидно, наилучшее из возможных.)