Ejemplo n.º 1
0
        public static void PrintGraphBFS(GraphVertex root)
        {
            Dictionary <GraphVertex, bool> visited = new Dictionary <GraphVertex, bool>();
            Queue <GraphVertex>            queue   = new Queue <GraphVertex>();

            queue.Enqueue(root);
            while (queue.Count > 0)
            {
                GraphVertex v = queue.Dequeue();
                if (!visited.ContainsKey(v))    // To make sure we dont print twice when we encounter cycle
                {
                    visited[v] = true;
                    Console.Write("{0} -> ", v.Data);
                    foreach (GraphVertex n in v.NeighbourVertices)
                    {
                        Console.Write("{0} ", n.Data);
                        if (!visited.ContainsKey(n))
                        {
                            queue.Enqueue(n);
                        }
                    }
                    Console.WriteLine();
                }
            }
        }
 public void MergeVertex(int vertex1, int vertex2)
 {
     if (!AllVertices.ContainsKey(vertex1))
     {
         AllVertices[vertex1] = new GraphVertex(vertex1);
     }
     if (!AllVertices.ContainsKey(vertex2))
     {
         AllVertices[vertex2] = new GraphVertex(vertex2);
     }
     AllVertices[vertex1].NeighbourVertices.AddRange(AllVertices[vertex2].NeighbourVertices);
 }
 public void AddEdge(int start, int end)
 {
     if (!AllVertices.ContainsKey(start))
     {
         AllVertices[start] = new GraphVertex(start);
     }
     if (!AllVertices.ContainsKey(end))
     {
         AllVertices[end] = new GraphVertex(end);
     }
     AllVertices[start].NeighbourVertices.Add(AllVertices[end]);
 }