public static void main(String[] args) {
        In in = new In(args[0]);
        int N = in.readInt();
        double[][] weight = new double[N][N];
        for (int i = 0; i < N; i++) {
            for (int j = 0; j < N; j++) {
                weight[i][j] = in.readDouble();
            }
        }

        AssignmentProblem assignment = new AssignmentProblem(weight);
        StdOut.println("weight = " + assignment.weight());
        for (int i = 0; i < N; i++)
            StdOut.println(i + "-" + assignment.sol(i) + "' " + weight[i][assignment.sol(i)]);

        for (int i = 0; i < N; i++)
            StdOut.println("px[" + i + "] = " + assignment.dualRow(i));
        for (int j = 0; j < N; j++)
            StdOut.println("py[" + j + "] = " + assignment.dualCol(j));
        for (int i = 0; i < N; i++)
            for (int j = 0; j < N; j++)
                StdOut.println("reduced[" + i + "-" + j + "] = " + assignment.reduced(i, j));

    }