class Solution:
def maximumDetonation(self, bombs: list[list[int]]) -> int:
adj = [[] for _ in range(len(bombs))]
for i in range(len(bombs)):
x1, y1, r1 = bombs[i]
for j in range(i + 1, len(bombs)):
x2, y2, r2 = bombs[j]
d = (x1 - x2) ** 2 + (y1 - y2) ** 2
if d <= r1 ** 2:
adj[i].append(j)
if d <= r2 ** 2:
adj[j].append(i)
def dfs(i, visit):
if i in visit:
return 0
visit.add(i)
for nei in adj[i]:
dfs(nei, visit)
return len(visit)
res = 0
for i in range(len(bombs)):
res = max(res, dfs(i, set()))
return resclass Solution:
def maximumDetonation(self, bombs: list[list[int]]) -> int:
n = len(bombs)
adj = [[] for _ in range(n)]
for i in range(n):
x1, y1, r1 = bombs[i]
for j in range(i + 1, n):
x2, y2, r2 = bombs[j]
d = (x1 - x2) ** 2 + (y1 - y2) ** 2
if d <= r1 ** 2:
adj[i].append(j)
if d <= r2 ** 2:
adj[j].append(i)
res = 0
for i in range(n):
q = deque([i])
visit = [False] * n
visit[i] = True
count = 1
while q:
node = q.popleft()
for nei in adj[node]:
if not visit[nei]:
visit[nei] = True
count += 1
q.append(nei)
res = max(res, count)
return resclass Solution:
def maximumDetonation(self, bombs: list[list[int]]) -> int:
n = len(bombs)
adj = [[] for _ in range(n)]
for i in range(n):
x1, y1, r1 = bombs[i]
for j in range(i + 1, n):
x2, y2, r2 = bombs[j]
d = (x1 - x2) ** 2 + (y1 - y2) ** 2
if d <= r1 ** 2:
adj[i].append(j)
if d <= r2 ** 2:
adj[j].append(i)
res = 0
for i in range(n):
stack = [i]
visit = [False] * n
visit[i] = True
count = 1
while stack:
node = stack.pop()
for nei in adj[node]:
if not visit[nei]:
visit[nei] = True
count += 1
stack.append(nei)
res = max(res, count)
return res