Beispiel #1
0
        public IEnumerable <Arc> Arcs(Node u, ArcFilter filter = ArcFilter.All)
        {
            DisjointSetSet <Node> x = nodeGroups.WhereIs(u);

            foreach (var node in nodeGroups.Elements(x))
            {
                foreach (var arc in graph.Arcs(node, filter))
                {
                    bool loop = (U(arc) == V(arc));
                    // we should avoid outputting an arc twice
                    if (!loop || !(filter == ArcFilter.All || IsEdge(arc)) || graph.U(arc) == node)
                    {
                        yield return(arc);
                    }
                }
            }
        }
Beispiel #2
0
        public IEnumerable <Arc> Arcs(Node u, ArcFilter filter = ArcFilter.All)
        {
            DisjointSetSet <Node> x = nodeGroups.WhereIs(u);

            foreach (Node item in nodeGroups.Elements(x))
            {
                foreach (Arc item2 in graph.Arcs(item, filter))
                {
                    if (!(U(item2) == V(item2)) || (filter != 0 && !IsEdge(item2)) || graph.U(item2) == item)
                    {
                        yield return(item2);

                        /*Error: Unable to find new state assignment for yield return*/;
                    }
                }
            }
            yield break;
IL_01db:
            /*Error near IL_01dc: Unexpected return in MoveNext()*/;
        }
 /// Gets the nodes which are contracted with the given node.
 /// \param n A node of the original graph (this includes nodes of the adaptor).
 /// \return The nodes in the same equivalence class (at least 1).
 public IEnumerable <Node> GetChildren(Node n)
 {
     return(nodeGroups.Elements(nodeGroups.WhereIs(n)));
 }