// Copyright 2026 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package graph // Reachable returns the set of nodes reachable from the given roots. func Reachable[NodeID comparable](g Graph[NodeID], roots ...NodeID) map[NodeID]bool { seen := make(map[NodeID]bool) var visit func(node NodeID) visit = func(node NodeID) { if !seen[node] { seen[node] = true for e := range g.Out(node) { visit(e) } } } for _, root := range roots { visit(root) } return seen }