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