From 647d28206710c2eacf50b4bc2c7c57d9d345fbbe Mon Sep 17 00:00:00 2001 From: kkunkka Date: Thu, 25 Sep 2025 11:31:22 +0800 Subject: [PATCH] kk --- .../java/com/dota/graph/_2492/Solution.java | 32 ++++++++++++++ .../java/com/dota/graph/_3310/Solution.java | 43 +++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 src/main/java/com/dota/graph/_2492/Solution.java create mode 100644 src/main/java/com/dota/graph/_3310/Solution.java diff --git a/src/main/java/com/dota/graph/_2492/Solution.java b/src/main/java/com/dota/graph/_2492/Solution.java new file mode 100644 index 0000000..83308c4 --- /dev/null +++ b/src/main/java/com/dota/graph/_2492/Solution.java @@ -0,0 +1,32 @@ +package com.dota.graph._2492; + +import java.util.*; + +class Solution { + public static void main(String[] args) { + new Solution().minScore(4, new int[][]{{1,2,2},{1,3,4},{3,4,7}}); + } + int res = Integer.MAX_VALUE; + public int minScore(int n, int[][] roads) { + List[] grid = new ArrayList[n+1]; + Arrays.setAll(grid, i -> new ArrayList<>()); + var visited = new boolean[n+1]; + for (int[] road : roads) { + grid[road[0]].add(new int[]{road[1], road[2]}); + grid[road[1]].add(new int[]{road[0], road[2]}); + } + + dfs(grid, 1, visited); + return res; + } + + void dfs(List[] grid, int i, boolean[] visited) { + visited[i] = true; + for (int k = 0; k < grid[i].size(); k++) { + res = Math.min(res, grid[i].get(k)[1]); + if (!visited[grid[i].get(k)[0]]) { + dfs(grid, grid[i].get(k)[0], visited); + } + } + } +} \ No newline at end of file diff --git a/src/main/java/com/dota/graph/_3310/Solution.java b/src/main/java/com/dota/graph/_3310/Solution.java new file mode 100644 index 0000000..50e0d5e --- /dev/null +++ b/src/main/java/com/dota/graph/_3310/Solution.java @@ -0,0 +1,43 @@ +package com.dota.graph._3310; + +import java.util.*; + +class Solution { + public List remainingMethods(int n, int k, int[][] invocations) { + var book = new boolean[n]; + book[k] = true; + var g = new ArrayList[n]; + Arrays.setAll(g, i -> new ArrayList()); + for (int[] invocation : invocations) { + g[invocation[0]].add(invocation[1]); + } + + df(g, k, book); + var res = new ArrayList(); + for (int[] invocation : invocations) { + if (!book[invocation[0]] && book[invocation[1]]) { + for (int i = 0; i < n; i++) { + res.add(i); + } + return res; + } + } + + for (int i = 0; i < book.length; i++) { + if (!book[i]) { + res.add(i); + } + } + + return res; + } + + void df(List[] g, int t, boolean[] book) { + book[t] = true; + for (Integer i : g[t]) { + if (!book[i]) { + df(g, i, book); + } + } + } +} \ No newline at end of file