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();
        }