diff --git a/src/main/java/com/dota/graph/_2101/Solution.java b/src/main/java/com/dota/graph/_2101/Solution.java new file mode 100644 index 0000000..f065713 --- /dev/null +++ b/src/main/java/com/dota/graph/_2101/Solution.java @@ -0,0 +1,50 @@ +package com.dota.graph._2101; + +import java.util.ArrayList; +import java.util.List; + +class Solution { + public int maximumDetonation(int[][] bombs) { + int n = bombs.length; + var g = new ArrayList>(); + for (int i = 0; i < n; i++) { + g.add(new ArrayList<>()); + ; + } + int max = 1; + for (int i = 0; i < n; i++) { + for (int j = i + 1; j < n; j++) { + long a = bombs[i][0] - bombs[j][0]; + long b = bombs[i][1] - bombs[j][1]; + long c = bombs[i][2]; + long d = bombs[j][2]; + if (a * a + b * b <= c * c) { + g.get(i).add(j); + } + if (a * a + b * b <= d * d) { + g.get(j).add(i); + } + } + } + + for (int i = 0; i < n; i++) { + int size = df(g, new boolean[n], i); + if (size > max) { + max = size; + } + } + + return max; + } + + int df(List> g, boolean[] visited, int x) { + visited[x] = true; + int size = 1; + for (Integer i : g.get(x)) { + if (!visited[i]) { + size += df(g, visited, i); + } + } + return size; + } +} \ No newline at end of file