static void Main(string[] args) { if (args.Length == 0) { System.Console.WriteLine("Please enter a numeric argument."); } else { string plik = args[0]; int pWierzch = int.Parse(args[1]); Graph graf = GraphReader.ReadWithWeight(plik); bool spojny = GraphService.SprawdzCzyGrafSpojny(graf); if (spojny) { // K02: Wyszukaj w grafie wszystkie wierzchołki o nieparzystych stopniach. GraphService.ZnajdzCyklEulera(graf, pWierzch); //GraphReader.SaveWithWeight(graf); } else { Console.WriteLine("Graf nie jest grafem spojnym."); } Console.ReadLine(); } }
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"); } }