示例#1
0
        static void Main(string[] args)
        {
            System.Diagnostics.Debugger.Break();
            if (args.Length == 0)
            {
                System.Console.WriteLine("Please enter a numeric argument.");
            }
            else
            {
                string plik     = args[0];
                int    pWierzch = int.Parse(args[1]);
                int    dWierzch = int.Parse(args[2]);

                Graph graphWithWeight = GraphReader.ReadWithWeight(plik);
                GraphService.Dijkstra(pWierzch, dWierzch, graphWithWeight);
            }
        }
示例#2
0
        public static void SprawdzCzyGrafTypuKolo(Graph graph)
        {
            bool grafTypuKolo = false;
            // pobieram wszystkie wierzcholki i sprawdzam cz jest wierzcholek ktory
            // jest polaczony z wszystkimi innymi wierzcholkami
            List <int> wierzcholkiPobranegoGrafu = GetVerticies(graph);

            int         sprawdzanyWierzcholek  = 0;
            Stack <int> sasiadujaceWierzcholki = new Stack <int>();

            foreach (int wierzcholek in wierzcholkiPobranegoGrafu)
            {
                foreach (Edge edge in graph.Edges)
                {
                    if (wierzcholek == edge.From)
                    {
                        sasiadujaceWierzcholki.Push(edge.To);
                    }

                    if (wierzcholek == edge.To)
                    {
                        sasiadujaceWierzcholki.Push(edge.From);
                    }
                }

                if (sasiadujaceWierzcholki.Count == wierzcholkiPobranegoGrafu.Count - 1)
                {
                    Console.WriteLine("Wierzcholek grafu typu kolo do usuniecia: " + wierzcholek);
                    grafTypuKolo          = true;
                    sprawdzanyWierzcholek = wierzcholek;
                }
                sasiadujaceWierzcholki.Clear();
            }

            List <Edge> tworzonyGrafCykliczny = new List <Edge>();

            // jesli jest taki wierzcholek to usuwam go i sprawdzam czy powstanie graf regularny drugiego stopnia i spojny
            if (grafTypuKolo)
            {
                Console.WriteLine("Graf jest grafem typu kolo, tworze graf cykliczny.");
                Graph grafCykliczny = UtworzGrafCykliczny(graph, sprawdzanyWierzcholek);
                GraphReader.Save(grafCykliczny, @"c.txt");
                Console.WriteLine("Zapisano utworzony graf cykliczny do pliku c.txt");
            }
        }