using System.Collections.Generic;
public static void Main()
var graph = new Dictionary<int, List<int>>
public void BFS(Dictionary<int, List<int>> adjList, int start)
var visited = new HashSet<int>();
var queue = new Queue<int>();
var node = queue.Dequeue();
foreach (var neighbour in adjList[node])
if (!visited.TryGetValue(neighbour, out int _))
queue.Enqueue(neighbour);