public void cover(Biclique biclique) {
        // not form a biclique
        if (biclique.isEmpty()) {
            throw new RuntimeException(
                    "either partite of the biclique is empty");
        }

        // cover tc and update degree indicators
        for (int i : biclique.L) {
            for (int j : biclique.R) {
                // cover a edge, i -> j, update degree and tc
                L_DegreeIndicators[i].dec();
                R_DegreeIndicators[j].dec();
                this.tc.flip(i, j);
            }
        }
    }