private void DFSCollect(
JamBlockController node,
List<JamBlockController> comp,
HashSet<JamBlockController> visited,
Dictionary<JamBlockController, List<(int bind, JamBlockController neighbor)>> graph
)
{
if (visited.Contains(node))
return;
visited.Add(node);
comp.Add(node);
if (!graph.ContainsKey(node)) return;
foreach (var (_, nbr) in graph[node])
DFSCollect(nbr, comp, visited, graph);
}