public void insertEdge(EdgeForKruskal edge) {
        int vertexA = edge.getVertexA();
        int vertexB = edge.getVertexB();

        HashSet<Integer> vertexGroupA = getVertexGroup(vertexA);
        HashSet<Integer> vertexGroupB = getVertexGroup(vertexB);

        if (vertexGroupA == null) {
            kruskalEdges.add(edge);
            if (vertexGroupB == null) {
                HashSet<Integer> htNewVertexGroup = new HashSet<Integer>();
                htNewVertexGroup.add(vertexA);
                htNewVertexGroup.add(vertexB);
                vertexGroups.add(htNewVertexGroup);
            } else {
                vertexGroupB.add(vertexA);
            }
        } else {
            if (vertexGroupB == null) {
                vertexGroupA.add(vertexB);
                kruskalEdges.add(edge);
            } else if (vertexGroupA != vertexGroupB) {
                vertexGroupA.addAll(vertexGroupB);
                vertexGroups.remove(vertexGroupB);
                kruskalEdges.add(edge);
            }
        }
    }