/**
         * print method for debugging
         */
        public void printMe()
        {
            for (int i = 0; i < this.row; i++)
            {
                for (int j = 0; j < this.col; j++)
                {
                    MatrixElement e = this.matrix[i, j];
                    if (this.coveredRows[e.getMyRow()])
                    {
                        Console.Out.Write("|");
                    }
                    if (this.coveredCols[e.getMyCol()])
                    {
                        Console.Out.Write("|");
                    }
                    if (e.getValue() < Double.MaxValue)
                    {
                        double temp = ((int)(e.getValue() * 1000.0)) / 1000.0;
                        Console.Out.Write(temp);
                    }
                    else
                    {
                        Console.Out.Write("inf");
                    }

                    if (e.isPrimed())
                    {
                        Console.Out.Write("'");
                    }
                    if (e.isStarred())
                    {
                        Console.Out.Write("*");
                    }
                    if (this.coveredRows[e.getMyRow()])
                    {
                        Console.Out.Write("|");
                    }
                    if (this.coveredCols[e.getMyCol()])
                    {
                        Console.Out.Write("|");
                    }
                    Console.Out.Write("\t");
                }
                Console.Out.WriteLine();
            }
            Console.Out.Write("\n");
        }
        /**
         * @return a int[][] with the indices representing the mappings
         */
        public int[,] getStarredIndices(int dim)
        {
            int[,] indices = new int[dim, 2];
            int counter = 0;

            for (int i = 0; i < this.row; i++)
            {
                for (int j = 0; j < this.col; j++)
                {
                    MatrixElement e = this.matrix[i, j];
                    if (e.isStarred())
                    {
                        indices[counter, 0] = i;
                        indices[counter, 1] = j;
                        counter++;
                    }
                }
            }
            return(indices);
        }