diff --git a/.github/workflows/cpp.yml b/.github/workflows/cpp.yml index ec8b8aa5..b13e75c9 100644 --- a/.github/workflows/cpp.yml +++ b/.github/workflows/cpp.yml @@ -4,7 +4,7 @@ on: [push] jobs: build-ubuntu-gcc-14: - runs-on: ubuntu-24.04 + runs-on: ubuntu-latest strategy: matrix: config: @@ -28,6 +28,8 @@ jobs: - uses: actions/checkout@v2 - name: install clang run: | + wget http://mirrors.kernel.org/ubuntu/pool/main/libf/libffi/libffi7_3.3-4_amd64.deb + sudo dpkg -i libffi7_3.3-4_amd64.deb sudo apt-key adv --fetch-keys https://apt.llvm.org/llvm-snapshot.gpg.key sudo add-apt-repository "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-19 main" sudo apt-get install clang-19 diff --git a/.github/workflows/java.yml b/.github/workflows/java.yml index e382581c..3745c614 100644 --- a/.github/workflows/java.yml +++ b/.github/workflows/java.yml @@ -9,7 +9,7 @@ jobs: matrix: config: - {java-version: 1.8} - - {java-version: 22} + - {java-version: 23} steps: - uses: actions/checkout@v2 - name: Set up JDK diff --git a/java/combinatorics/PruferCode.java b/java/combinatorics/PruferCode.java index 3f485f1b..131a9e07 100644 --- a/java/combinatorics/PruferCode.java +++ b/java/combinatorics/PruferCode.java @@ -23,8 +23,7 @@ public static List[] pruferCode2Tree(int[] pruferCode) { if (degree[v] == 1 && v < ptr) { leaf = v; } else { - while (degree[++ptr] != 1) - ; + while (degree[++ptr] != 1); leaf = ptr; } } @@ -59,8 +58,7 @@ public static int[] tree2PruferCode(List[] tree) { if (degree[next] == 1 && next < ptr) { leaf = next; } else { - while (degree[++ptr] != 1) - ; + while (degree[++ptr] != 1); leaf = ptr; } } diff --git a/java/combinatorics/RandomGraph.java b/java/combinatorics/RandomGraph.java index 7e8c3c75..a91315f5 100644 --- a/java/combinatorics/RandomGraph.java +++ b/java/combinatorics/RandomGraph.java @@ -16,8 +16,7 @@ public static List[] getRandomTree(int V, Random rnd) { public static List[] getRandomTree2(int n, Random rnd) { List[] t = Stream.generate(ArrayList::new).limit(n).toArray(List[] ::new); int[] p = new int[n]; - for (int i = 0, j; i < n; j = rnd.nextInt(i + 1), p[i] = p[j], p[j] = i, i++) - ; // random permutation + for (int i = 0, j; i < n; j = rnd.nextInt(i + 1), p[i] = p[j], p[j] = i, i++); // random permutation for (int i = 1; i < n; i++) { int parent = p[rnd.nextInt(i)]; t[parent].add(p[i]); diff --git a/java/graphs/flows/MaxFlowDinic.java b/java/graphs/flows/MaxFlowDinic.java index 6927ca62..0c494089 100644 --- a/java/graphs/flows/MaxFlowDinic.java +++ b/java/graphs/flows/MaxFlowDinic.java @@ -67,8 +67,7 @@ public int maxFlow(int src, int dest) { int flow = 0; while (dinicBfs(src, dest)) { int[] ptr = new int[graph.length]; - for (int df; (df = dinicDfs(ptr, dest, src, Integer.MAX_VALUE)) != 0; flow += df) - ; + for (int df; (df = dinicDfs(ptr, dest, src, Integer.MAX_VALUE)) != 0; flow += df); } return flow; } diff --git a/java/graphs/matchings/MaxGeneralMatchingRandomized.java b/java/graphs/matchings/MaxGeneralMatchingRandomized.java index 7ea5c376..c33eaf89 100644 --- a/java/graphs/matchings/MaxGeneralMatchingRandomized.java +++ b/java/graphs/matchings/MaxGeneralMatchingRandomized.java @@ -20,8 +20,7 @@ static int rank(int[][] a) { int n = a.length; for (int j = 0; j < n; j++) { int k; - for (k = r; k < n && a[k][j] == 0; k++) - ; + for (k = r; k < n && a[k][j] == 0; k++); if (k == n) continue; diff --git a/java/strings/SuffixArray.java b/java/strings/SuffixArray.java index 78729e42..f5c4b280 100644 --- a/java/strings/SuffixArray.java +++ b/java/strings/SuffixArray.java @@ -84,8 +84,7 @@ public static int[] lcp(int[] sa, CharSequence s) { for (int i = 0, h = 0; i < n; i++) { if (rank[i] < n - 1) { for (int j = sa[rank[i] + 1]; Math.max(i, j) + h < s.length() && s.charAt(i + h) == s.charAt(j + h); - ++h) - ; + ++h); lcp[rank[i]] = h; if (h > 0) --h; diff --git a/java/strings/SuffixArrayDC3.java b/java/strings/SuffixArrayDC3.java index c01ceadc..5e1c2c8f 100644 --- a/java/strings/SuffixArrayDC3.java +++ b/java/strings/SuffixArrayDC3.java @@ -83,7 +83,7 @@ private static void suffixArray(int[] T, int[] SA, int n, int K) { if (SA12[t] < n0 ? // different compares for mod 1 and mod 2 suffixes leq(T[i], R[SA12[t] + n0], T[j], R[j / 3]) : leq(T[i], T[i + 1], R[SA12[t] - n0 + 1], T[j], T[j + 1], - R[j / 3 + n0])) { // suffix from SA12 is smaller + R[j / 3 + n0])) { // suffix from SA12 is smaller SA[k] = i; if (++t == n02) // done --- only SA0 suffixes left for (k++; p < n0; p++, k++) SA[k] = SA0[p]; @@ -114,8 +114,7 @@ public static int[] lcp(int[] sa, CharSequence s) { for (int i = 0, h = 0; i < n; i++) { if (rank[i] < n - 1) { for (int j = sa[rank[i] + 1]; Math.max(i, j) + h < s.length() && s.charAt(i + h) == s.charAt(j + h); - ++h) - ; + ++h); lcp[rank[i]] = h; if (h > 0) --h; diff --git a/java/structures/LinkCutTreeLca.java b/java/structures/LinkCutTreeLca.java index e04af542..be6eccc7 100644 --- a/java/structures/LinkCutTreeLca.java +++ b/java/structures/LinkCutTreeLca.java @@ -150,8 +150,7 @@ public static void main(String[] args) { Set path = new HashSet<>(); for (; cur != -1; cur = p[cur]) path.add(cur); cur = v; - for (; cur != -1 && !path.contains(cur); cur = p[cur]) - ; + for (; cur != -1 && !path.contains(cur); cur = p[cur]); if (lca != nodes[cur]) throw new RuntimeException(); } diff --git a/java/test/lca/LcaSchieberVishkinTest.java b/java/test/lca/LcaSchieberVishkinTest.java index d9372440..276c052e 100644 --- a/java/test/lca/LcaSchieberVishkinTest.java +++ b/java/test/lca/LcaSchieberVishkinTest.java @@ -36,8 +36,7 @@ public static void main(String[] args) { static List[] getRandomTree(int n, Random rnd) { List[] t = Stream.generate(ArrayList::new).limit(n).toArray(List[] ::new); int[] p = new int[n]; - for (int i = 0, j; i < n; j = rnd.nextInt(i + 1), p[i] = p[j], p[j] = i, i++) - ; // random permutation + for (int i = 0, j; i < n; j = rnd.nextInt(i + 1), p[i] = p[j], p[j] = i, i++); // random permutation for (int i = 1; i < n; i++) { int parent = p[rnd.nextInt(i)]; t[parent].add(p[i]); diff --git a/java/test/lca/LcaTest.java b/java/test/lca/LcaTest.java index a124d17c..adc1f7bb 100644 --- a/java/test/lca/LcaTest.java +++ b/java/test/lca/LcaTest.java @@ -36,8 +36,7 @@ public static void main(String[] args) { static List[] getRandomTree(int n, Random rnd) { List[] t = Stream.generate(ArrayList::new).limit(n).toArray(List[] ::new); int[] p = new int[n]; - for (int i = 0, j; i < n; j = rnd.nextInt(i + 1), p[i] = p[j], p[j] = i, i++) - ; // random permutation + for (int i = 0, j; i < n; j = rnd.nextInt(i + 1), p[i] = p[j], p[j] = i, i++); // random permutation for (int i = 1; i < n; i++) { int parent = p[rnd.nextInt(i)]; t[parent].add(p[i]); diff --git a/java/test/structures/HeavyLightTest.java b/java/test/structures/HeavyLightTest.java index 6feb4a8e..bdf3d2f5 100644 --- a/java/test/structures/HeavyLightTest.java +++ b/java/test/structures/HeavyLightTest.java @@ -85,8 +85,7 @@ static boolean getPathFromAtoB(List[] tree, int a, int b, int p, List[] getRandomTree(int n, Random rnd) { List[] t = Stream.generate(ArrayList::new).limit(n).toArray(List[] ::new); int[] p = new int[n]; - for (int i = 0, j; i < n; j = rnd.nextInt(i + 1), p[i] = p[j], p[j] = i, i++) - ; // random permutation + for (int i = 0, j; i < n; j = rnd.nextInt(i + 1), p[i] = p[j], p[j] = i, i++); // random permutation for (int i = 1; i < n; i++) { int parent = p[rnd.nextInt(i)]; t[parent].add(p[i]);