c# : Easy Solution
\tpublic class Solution\n\t{\n\t\tpublic int MaximumDetonation(int[][] bombs)\n\t\t{\n\t\t\tint max = 0;\n\t\t\tDictionary> graph = new Dictionary>();\n\n\t\t\t
\tpublic class Solution\n\t{\n\t\tpublic int MaximumDetonation(int[][] bombs)\n\t\t{\n\t\t\tint max = 0;\n\t\t\tDictionary<int, List<int>> graph = new Dictionary<int, List<int>>();\n\n\t\t\tfor (int i = 0; i < bombs.GetLength(0); i++)\n\t\t\t{\n\t\t\t\tif (!graph.ContainsKey(i))\n\t\t\t\t\tgraph[i] = new List<int>();\n\n\t\t\t\tfor (int j = i + 1; j < bombs.GetLength(0); j++)\n\t\t\t\t{\n\t\t\t\t\tif (!graph.ContainsKey(j))\n\t\t\t\t\t\tgraph[j] = new List<int>();\n\n\t\t\t\t\tif (CheckIfCirclesIntersact(bombs[i][0], bombs[i][1], bombs[j][0], bombs[j][1], bombs[i][2]))\n\t\t\t\t\t\tgraph[i].Add(j);\n\n\t\t\t\t\tif (CheckIfCirclesIntersact(bombs[j][0], bombs[j][1], bombs[i][0], bombs[i][1], bombs[j][2]))\n\t\t\t\t\t\tgraph[j].Add(i);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor (int i = 0; i < bombs.GetLength(0); i++)\n\t\t\t{\n\t\t\t\tHashSet<int> set = new HashSet<int>() { i };\n\t\t\t\tBFS(graph, i, set);\n\t\t\t\tmax = Math.Max(max, set.Count);\n\t\t\t}\n\n\t\t\treturn max;\n\t\t}\n\n\t\tprivate void BFS(Dictionary<int, List<int>> graph, int idx, HashSet<int> set)\n\t\t{\n\t\t\tQueue<int> queue = new Queue<int>();\n\n\t\t\tqueue.Enqueue(idx);\n\n\t\t\twhile (queue.Count > 0)\n\t\t\t{\n\t\t\t\tint node = queue.Dequeue();\n\n\t\t\t\tforeach (var n in graph[node])\n\t\t\t\t{\n\t\t\t\t\tif (!set.Contains(n))\n\t\t\t\t\t{\n\t\t\t\t\t\tqueue.Enqueue(n);\n\t\t\t\t\t\tset.Add(n);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate bool CheckIfCirclesIntersact(int x1, int y1, int x2, int y2, int r1)\n\t\t{\n\t\t\tlong dx = x1 - x2;\n\t\t\tlong dy = y1 - y2;\n\t\t\tlong radius = r1;\n\n\t\t\tlong distSq = (dx * dx) + (dy * dy);\n\t\t\tlong radSumSq = radius * radius;\n\n\t\t\treturn distSq <= radSumSq;\n\t\t}\n\t}
['Breadth-First Search', 'Graph']