parentsOf method

Map<V, Vertex<V>> parentsOf(
  1. Vertex<V> vertex
)

Implementation

Map<V, Vertex<V>> parentsOf(Vertex<V> vertex) {
  if (!vertices.containsValue(vertex)) return {};
  return vertices.entries.fold({}, (a, c) {
    final parentIds = uniqueEdges.keys
        .where((edgeId) => edgeId.$2 == c.key)
        .map((edgeId) => edgeId.$1);
    final parents = Map.fromEntries(vertices.entries
        .where((entry) => parentIds.any((childId) => entry.key == childId))
        .where((entry) => !a.containsKey(entry.key)));
    return {...a, ...parents};
  });
}