private static void Task1(string input) { Console.WriteLine(); Console.WriteLine("--------------------------------------------"); Console.WriteLine("Практическое задание #1: " + input); Console.WriteLine("--------------------------------------------"); Console.WriteLine("ATTENTION: Выполнение задания занимает значительное время. Ориентировочно 48 часов."); Console.WriteLine("--------------------------------------------"); var inputFileName = @"Data\" + input + ".txt"; var inputReader = new StreamReader((new FileInfo(inputFileName)).OpenRead()); var graph = new Graph <string>(); var vertexCount = 0; var edgeCount = 0; #region INPUT var row = inputReader.ReadLine(); var vs = row.Split(' '); vertexCount = Convert.ToInt32(vs[0]); edgeCount = Convert.ToInt32(vs[0]); graph._graph = new Dictionary <string, IList <KeyValuePair <string, decimal> > >(vertexCount); while (!inputReader.EndOfStream) { row = inputReader.ReadLine(); vs = row.Split(' '); var key = vs[1]; var cost = Convert.ToDecimal(vs[2]); if (!graph._graph.ContainsKey(vs[0])) { graph._graph.Add(new KeyValuePair <string, IList <KeyValuePair <string, decimal> > >(vs[0], new List <KeyValuePair <string, decimal> >())); } graph._graph[vs[0]].Add(new KeyValuePair <string, decimal>(key, cost)); } //Validate Graph var length = graph._graph.Count; for (var i = 0; i < length; ++i) { var v = graph._graph.Keys.ElementAt(i); foreach (var u in graph._graph[v]) { if (!graph._graph.ContainsKey(u.Key)) { graph._graph.Add(u.Key, null); } } } #endregion Console.WriteLine("Файл прочитан:{0}", DateTime.Now); var resultFile = File.AppendText(input + "-result.txt"); var s = "100562"; var e = "1070345"; IDictionary <string, decimal> a; IDictionary <string, IList <string> > b; graph.Dijkstra3(s, e, out a, out b); Console.WriteLine("Путь расчитан:{0}", DateTime.Now); Console.WriteLine(new string('.', 50)); var question1 = String.Format("Вопрос 1: Наиболее короткое расcтояние между вершинами: {0} --> {1} равно: {2}", s, e, a[e]); Console.WriteLine(question1); resultFile.Write(question1); resultFile.Write(Environment.NewLine); Console.WriteLine(new string('.', 50)); var pathCount = getShortestPath(s, e, b); var question2 = String.Format("Вопрос 2: Количество уникальных коротких путей между вершинами: {0} --> {1} равно: {2}", s, e, pathCount.Length); Console.WriteLine(question2); resultFile.Write(question2); resultFile.Write(Environment.NewLine); resultFile.Flush(); resultFile.Dispose(); resultFile.Close(); Console.WriteLine(); Console.WriteLine(); }