//public static void Main(string[] args)
        //{
        //    string s;
        //    var inputs = new List<string>();
        //    while ((s = Console.ReadLine()) != null)
        //        inputs.Add(s);

        //    foreach (var result in Answer(inputs.ToArray()))
        //        Console.WriteLine(result);
        //}

        public static IList <string> Answer(IList <string> inputs)
        {
            var gis   = Inputs.AdjacencyListGraphLong(inputs);
            var g     = gis.ToEdges();
            var start = gis.NextAsIndex();


            var path = ShortestPath(start, g.Item1, g.Item2.ToList());

            return(path.Distance.Values
                   .Select(v =>
            {
                switch (v)
                {
                case NegativeInfinity:
                    return "-";

                case PositiveInfinity:
                    return "*";

                default:
                    return v.ToString();
                }
            })
                   .ToArray());
        }
Exemple #2
0
        //public static void Main(string[] args)
        //{
        //    string s;
        //    var inputs = new List<string>();
        //    while ((s = Console.ReadLine()) != null)
        //        inputs.Add(s);

        //    foreach (var result in Answer(inputs.ToArray()))
        //        Console.WriteLine(result);
        //}

        public static IList <string> Answer(IList <string> inputs)
        {
            var graph = Inputs.AdjacencyListGraphLong(inputs).ToDirectedAdjacencyGraph();
            //Console.WriteLine(graph);

            var answer = IsCyclic(graph) ? "1" : "0";

            return(new[] { answer });
        }
Exemple #3
0
        //public static void Main(string[] args)
        //{
        //    string s;
        //    var inputs = new List<string>();
        //    while ((s = Console.ReadLine()) != null)
        //        inputs.Add(s);

        //    foreach (var result in Answer(inputs.ToArray()))
        //        Console.WriteLine(result);
        //}

        public static IList <string> Answer(IList <string> inputs)
        {
            var gis = Inputs.AdjacencyListGraphLong(inputs);
            var g   = gis.ToEdges();

            var answer = HasNegativeCycle(g.Item1, g.Item2.ToList()) ? "1" : "0";

            return(new[] { answer });
        }
Exemple #4
0
        //public static void Main(string[] args)
        //{
        //    string s;
        //    var inputs = new List<string>();
        //    while ((s = Console.ReadLine()) != null)
        //        inputs.Add(s);

        //    foreach (var result in Answer(inputs.ToArray()))
        //        Console.WriteLine(result);
        //}

        public static IList <string> Answer(IList <string> inputs)
        {
            var gi    = Inputs.AdjacencyListGraphLong(inputs);
            var graph = gi.ToUndirectedAdjacencyGraph();
            //Console.WriteLine(graph);

            var answer = new BreadthFirstSearchWithBipartiteDetection(graph).IsBipartite() ? "1" : "0";

            return(new[] { answer });
        }
        //public static void Main(string[] args)
        //{
        //    string s;
        //    var inputs = new List<string>();
        //    while ((s = Console.ReadLine()) != null)
        //        inputs.Add(s);

        //    foreach (var result in Answer(inputs.ToArray()))
        //        Console.WriteLine(result);
        //}

        public static IList <string> Answer(IList <string> inputs)
        {
            var graph = Inputs.AdjacencyListGraphLong(inputs).ToUndirectedAdjacencyGraph();
            //Console.WriteLine(graph.ToPrettyString());

            var dsf = new DepthFirstSearchWithComponents(graph);

            dsf.Search();
            //Console.WriteLine(dsf.ToPrettyString());

            return(new[] { dsf.MaxComponent.ToString() });
        }
Exemple #6
0
        //public static void Main(string[] args)
        //{
        //    string s;
        //    var inputs = new List<string>();
        //    while ((s = Console.ReadLine()) != null)
        //        inputs.Add(s);

        //    foreach (var result in Answer(inputs.ToArray()))
        //        Console.WriteLine(result);
        //}

        public static IList <string> Answer(IList <string> inputs)
        {
            var graph = Inputs.AdjacencyListGraphLong(inputs).ToDirectedAdjacencyGraph();
            //Console.WriteLine(graph);

            var s = new TopologicalSort(graph);

            s.Search();
            var answer = string.Join(" ", s.Order.Select(GetSource));

            return(new[] { answer });
        }
Exemple #7
0
        //public static void Main(string[] args)
        //{
        //    string s;
        //    var inputs = new List<string>();
        //    while ((s = Console.ReadLine()) != null)
        //        inputs.Add(s);

        //    foreach (var result in Answer(inputs.ToArray()))
        //        Console.WriteLine(result);
        //}

        public static IList <string> Answer(IList <string> inputs)
        {
            var gi     = Inputs.AdjacencyListGraphLong(inputs);
            var graph  = gi.ToDirectedAdjacencyGraph();
            var points = gi.NextAsEdge();
            //Console.WriteLine(graph);

            var s    = new Dijkstras(graph);
            var cost = s.LowestCostPath(points.Left, points.Right);

            return(new[] { cost.ToString() });
        }
        //public static void Main(string[] args)
        //{
        //    string s;
        //    var inputs = new List<string>();
        //    while ((s = Console.ReadLine()) != null)
        //        inputs.Add(s);

        //    foreach (var result in Answer(inputs.ToArray()))
        //        Console.WriteLine(result);
        //}

        public static IList <string> Answer(IList <string> inputs)
        {
            var graphInputs = Inputs.AdjacencyListGraphLong(inputs);
            var g           = graphInputs.ToDirectedAdjacencyGraph();
            //Console.WriteLine(g);
            var rg = graphInputs.ToDirectedReverseAdjacencyGraph();
            //Console.WriteLine(rg);

            var s      = StronglyConnectedComponents(g, rg);
            var answer = s.Count();

            return(new[] { answer.ToString() });
        }
        //public static void Main(string[] args)
        //{
        //    string s;
        //    var inputs = new List<string>();
        //    while ((s = Console.ReadLine()) != null)
        //        inputs.Add(s);

        //    foreach (var result in Answer(inputs.ToArray()))
        //        Console.WriteLine(result);
        //}

        public static IList <string> Answer(IList <string> inputs)
        {
            var gi    = Inputs.AdjacencyListGraphLong(inputs);
            var graph = gi.ToUndirectedAdjacencyGraph();
            //Console.WriteLine(graph);

            var points = gi.NextAsEdge();
            var path   = new BreadthFirstSearchWithShortestPath(graph)
                         .ShortestPath(points.Left, points.Right);

            var answer = path.Any() ? path.Count.ToString() : "-1";

            return(new[] { answer });
        }
        //public static void Main(string[] args)
        //{
        //    string s;
        //    var inputs = new List<string>();
        //    while ((s = Console.ReadLine()) != null)
        //        inputs.Add(s);

        //    foreach (var result in Answer(inputs.ToArray()))
        //        Console.WriteLine(result);
        //}

        public static IList <string> Answer(IList <string> inputs)
        {
            var graphInputs = Inputs.AdjacencyListGraphLong(inputs);
            var graph       = graphInputs.ToUndirectedAdjacencyGraph();
            //Console.WriteLine(graph.ToPrettyString());

            var points = graphInputs.NextAsEdge();
            var dsf    = new DepthFirstSearchWithComponents(graph);

            dsf.Explore(points.Left);
            //Console.WriteLine(dsf.ToPrettyString());

            var hasPath = dsf.Visited(points.Right) ? "1" : "0";

            return(new[] { hasPath });
        }