// LLP-JobScheduling-Fixed: advance each job once all predecessors are fixed. class LLPJobSchedulingFixed { void LLPJobSchedulingFixed(int[] t, set[] pre) { int[] G = new int[n]; boolean[] fixed = new boolean[n]; forall k in [0..n-1] : G[k] = t[k]; forall k in [0..n-1] : fixed[k] = false; forbidden (j) : !fixed[j] && forall i in pre[j] : fixed[i] => advance : { G[j] = max i in pre[j] : G[i] + t[j]; fixed[j] = true; }; } }