// // Given v and e, how many {C3,C4}-free graphs are there? // import java.util.*; import static choco.Choco.*; import choco.cp.model.CPModel; import choco.cp.solver.CPSolver; import choco.kernel.model.Model; import choco.kernel.solver.Solver; import choco.kernel.model.variables.integer.IntegerVariable; import choco.cp.solver.search.integer.varselector.StaticVarOrder; import choco.cp.solver.search.integer.valiterator.DecreasingDomain; import choco.kernel.solver.variables.integer.IntDomainVar; public class ExtremalAll03 { int n; // number of vertices IntegerVariable [][] A; // A[i][j] = 1 <-> adjacent(i,j); IntegerVariable [] flatA; // A[][] flattened IntegerVariable [] instOrd; // instantiation order IntegerVariable e; // number of edges CPModel model; CPSolver solver; ExtremalAll03(int n,int e){ this.n = n; A = new IntegerVariable[n][n]; // A[i][j] == 1 <-> adjacent(i,j); flatA = new IntegerVariable[n*(n-1)/2]; instOrd = new IntegerVariable[n*(n-1)/2]; this.e = constant(e); for (int i=0,k=0;ii;j--,k++) instOrd[k] = A[i][j]; for (int i=0;i