private void BFS(Digraph G, IEnumerable <int> sources) { Queue <int> q = new Queue <int>(); foreach (int source in sources) { q.Enqueue(source); } while (!(q.Count == 0)) { int v = q.Dequeue(); foreach (int w in G.Adj(v)) { if (!marked[w]) { q.Enqueue(w); marked[w] = true; edgeTo[w] = v; } } } }