3. Given the following graph adjacency list and BFS code snippet, what is the output list of connected components?
var graph = new Dictionary {
{1, new List<int>{2}},
{2, new List<int>{1, 3}},
{3, new List<int>{2}},
{4, new List<int>{5}},
{5, new List<int>{4}}
};
List connectedComponents = new List();
HashSet<int> visited = new HashSet<int>();
foreach (var node in graph.Keys) {
if (!visited.Contains(node)) {
Queue<int> queue = new Queue<int>();
List<int> component = new List<int>();
queue.Enqueue(node);
visited.Add(node);
while (queue.Count > 0) {
int current = queue.Dequeue();
component.Add(current);
foreach (var neighbor in graph[current]) {
if (!visited.Contains(neighbor)) {
visited.Add(neighbor);
queue.Enqueue(neighbor);
}
}
}
connectedComponents.Add(component);
}
}
foreach (var comp in connectedComponents) {
Console.WriteLine(string.Join(",", comp));
}