Ejemplo n.º 1
0
        static void checkConnected(villageProgram program)
        {
            if (program.connectedTo == null)
            {
                groups.Add(new List <villageProgram> {
                    program
                });
                program.connectedTo = groups.Count - 1;
            }

            if (!groups[(int)program.connectedTo].Contains(program))
            {
                groups[(int)program.connectedTo].Add(program);
            }

            for (int i = 0; i < program.directlyConnected.Count; i++)
            {
                villageProgram dcProgram = programs.Find(p => p.id == program.directlyConnected[i]);
                dcProgram.connectedTo = program.connectedTo;
                dcProgram.directlyConnected.Remove((int)program.connectedTo);
                for (int j = 0; j < groups[(int)program.connectedTo].Count; j++)
                {
                    dcProgram.directlyConnected.Remove(groups[(int)program.connectedTo][j].id);
                }
                checkConnected(dcProgram);
            }
        }
Ejemplo n.º 2
0
        static void Main(string[] args)
        {
            string[] lines = File.ReadAllLines("../../input.txt");


            for (int i = 0; i < lines.Length; i++)
            {
                Match          match   = Regex.Match(lines[i], @"(\d+) <-> (.+)");
                villageProgram program = new villageProgram();
                program.id = int.Parse(match.Groups[1].Value);
                program.directlyConnected = match.Groups[2].Value.Split(new[] { ", " }, StringSplitOptions.None).Select(p => int.Parse(p)).ToList();
                programs.Add(program);
            }

            while (programs.Where(p => p.connectedTo == null).Count() > 0)
            {
                checkConnected(programs.Where(p => p.connectedTo == null).First());
            }

            Console.WriteLine("There are " + groups[0].Count + " connected to Program 0");
            Console.WriteLine("There are " + groups.Count + " groups in total");
            Console.Read();
        }