// // explores colour classes in decreasing order of size, newest first // within colour class, newest vertex first // import java.util.*; class MCWrev extends MCV { MCWrev (int n,int[][]A,int[] degree,int style) { super(n,A,degree,style); } void expand(ArrayList C,ArrayList P){ if (timeLimit > 0 && System.currentTimeMillis() - cpuTime >= timeLimit) return; nodes++; nodesAtDepth[C.size()]++; ArrayList> colourClasses = colourSort(P); int m = colourClasses.size(); for (int i=0;m + C.size() > maxSize;i++){ ArrayList colourClass = colourClasses.get(m-1); for (int j=0;j0 && m + C.size() > maxSize;j--){ int v = colourClass.get(j-1); C.add(v); ArrayList newP = new ArrayList(); for (int k=0;k maxSize) saveSolution(C); if (!newP.isEmpty()) expand(C,newP); C.remove((Integer) v); } m--; } } }