Пример #1
0
        private static bool HasPath(object adjacentRingA, object adjacentRingB, SimpleGraph <object> graph)
        {
            HashSet <object> visited    = new HashSet <object>();
            bool             more       = true;
            List <object>    actives    = new List <object>();
            List <object>    newActives = new List <object>();

            actives.Add(adjacentRingB);
            while (more)
            {
                more = false;
                foreach (object cur in actives)
                {
                    visited.Add(cur);
                    object[] items = graph.GetAdjacent(cur);
                    foreach (object o in items)
                    {
                        if (object.ReferenceEquals(o, adjacentRingA))
                        {
                            return(true);
                        }
                        if (visited.Add(o))
                        {
                            more = true;
                            newActives.Add(o);
                        }
                    }
                }
                actives = newActives;
                newActives.Clear();
            }
            return(false);
        }