Submission #11619087


Source Code Expand

using AtCoderTypicalContest001.Questions;
using AtCoderTypicalContest001.Extensions;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

namespace AtCoderTypicalContest001.Questions
{
    public class QuestionA : AtCoderQuestionBase
    {
        char[,] maze;
        bool[,] seen;
        int h = 0;
        int w = 0;

        public override IEnumerable<object> Solve(TextReader inputStream)
        {
            var hw = inputStream.ReadIntArray();
            h = hw[0];
            w = hw[1];
            maze = new char[w, h];
            seen = new bool[w, h];
            Tuple<int, int> start = null;
            Tuple<int, int> goal = null;

            for (int row = 0; row < h; row++)
            {
                var rowChar = inputStream.ReadLine().ToCharArray();

                for (int column = 0; column < w; column++)
                {
                    maze[column, row] = rowChar[column];

                    if (rowChar[column] == 's')
                    {
                        start = new Tuple<int, int>(column, row);
                    }
                    else if (rowChar[column] == 'g')
                    {
                        goal = new Tuple<int, int>(column, row);
                    }
                }
            }

            Search(start.Item1, start.Item2);

            if (seen[goal.Item1, goal.Item2])
            {
                yield return "Yes";
            }
            else
            {
                yield return "No";
            }
        }

        void Search(int x, int y)
        {
            bool isOutOfMaze = x < 0 || x >= w || y < 0 || y >= h;
            if (isOutOfMaze || maze[x, y] == '#' || seen[x, y])
            {
                return;
            }

            seen[x, y] = true;

            Search(x + 1, y);
            Search(x, y + 1);
            Search(x - 1, y);
            Search(x, y - 1);
        }
    }
}

namespace AtCoderTypicalContest001
{
    class Program
    {
        static void Main(string[] args)
        {
            IAtCoderQuestion question = new QuestionA();    // 問題に合わせて書き換え
            var answers = question.Solve(Console.In);
            foreach (var answer in answers)
            {
                Console.WriteLine(answer);
            }
        }
    }
}

#region Base Classes

namespace AtCoderTypicalContest001.Questions
{

    public interface IAtCoderQuestion
    {
        IEnumerable<object> Solve(string input);
        IEnumerable<object> Solve(TextReader inputStream);
    }

    public abstract class AtCoderQuestionBase : IAtCoderQuestion
    {
        public IEnumerable<object> Solve(string input)
        {
            var stream = new MemoryStream(Encoding.Unicode.GetBytes(input));
            var reader = new StreamReader(stream, Encoding.Unicode);

            return Solve(reader);
        }

        public abstract IEnumerable<object> Solve(TextReader inputStream);
    }

}

#endregion

#region Extensions

namespace AtCoderTypicalContest001.Extensions
{
    internal static class TextReaderExtensions
    {
        internal static int ReadInt(this TextReader reader) => int.Parse(ReadString(reader));
        internal static long ReadLong(this TextReader reader) => long.Parse(ReadString(reader));
        internal static double ReadDouble(this TextReader reader) => double.Parse(ReadString(reader));
        internal static string ReadString(this TextReader reader) => reader.ReadLine();

        internal static int[] ReadIntArray(this TextReader reader, char separator = ' ') => ReadStringArray(reader, separator).Select(int.Parse).ToArray();
        internal static long[] ReadLongArray(this TextReader reader, char separator = ' ') => ReadStringArray(reader, separator).Select(long.Parse).ToArray();
        internal static double[] ReadDoubleArray(this TextReader reader, char separator = ' ') => ReadStringArray(reader, separator).Select(double.Parse).ToArray();
        internal static string[] ReadStringArray(this TextReader reader, char separator = ' ') => reader.ReadLine().Split(separator);
    }
}

#endregion

Submission Info

Submission Time
Task A - 深さ優先探索
User terry_u16
Language C# (Mono 4.6.2.0)
Score 100
Code Size 4296 Byte
Status AC
Exec Time 43 ms
Memory 23008 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 5
AC × 83
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 00_sample_05.txt
All 00_min_01.txt, 00_min_02.txt, 00_min_03.txt, 00_min_04.txt, 00_min_05.txt, 00_min_06.txt, 00_min_07.txt, 00_min_08.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 00_sample_05.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 01_rnd_10.txt, 01_rnd_11.txt, 01_rnd_12.txt, 01_rnd_13.txt, 01_rnd_14.txt, 01_rnd_15.txt, 01_rnd_16.txt, 01_rnd_17.txt, 01_rnd_18.txt, 01_rnd_19.txt, 02_rndhard_00.txt, 02_rndhard_01.txt, 02_rndhard_02.txt, 02_rndhard_03.txt, 02_rndhard_04.txt, 02_rndhard_05.txt, 02_rndhard_06.txt, 02_rndhard_07.txt, 02_rndhard_08.txt, 02_rndhard_09.txt, 02_rndhard_10.txt, 02_rndhard_11.txt, 02_rndhard_12.txt, 02_rndhard_13.txt, 02_rndhard_14.txt, 02_rndhard_15.txt, 02_rndhard_16.txt, 02_rndhard_17.txt, 02_rndhard_18.txt, 02_rndhard_19.txt, 02_rndhard_20.txt, 02_rndhard_21.txt, 02_rndhard_22.txt, 02_rndhard_23.txt, 02_rndhard_24.txt, 02_rndhard_25.txt, 02_rndhard_26.txt, 02_rndhard_27.txt, 02_rndhard_28.txt, 02_rndhard_29.txt, 02_rndhard_30.txt, 02_rndhard_31.txt, 02_rndhard_32.txt, 02_rndhard_33.txt, 02_rndhard_34.txt, 02_rndhard_35.txt, 02_rndhard_36.txt, 02_rndhard_37.txt, 02_rndhard_38.txt, 02_rndhard_39.txt, 03_rndhardsmall_00.txt, 03_rndhardsmall_01.txt, 03_rndhardsmall_02.txt, 03_rndhardsmall_03.txt, 03_rndhardsmall_04.txt, 03_rndhardsmall_05.txt, 03_rndhardsmall_06.txt, 03_rndhardsmall_07.txt, 03_rndhardsmall_08.txt, 03_rndhardsmall_09.txt
Case Name Status Exec Time Memory
00_min_01.txt AC 24 ms 11348 KB
00_min_02.txt AC 23 ms 9300 KB
00_min_03.txt AC 25 ms 13396 KB
00_min_04.txt AC 24 ms 13396 KB
00_min_05.txt AC 24 ms 11348 KB
00_min_06.txt AC 24 ms 11348 KB
00_min_07.txt AC 24 ms 13396 KB
00_min_08.txt AC 24 ms 11348 KB
00_sample_01.txt AC 24 ms 11348 KB
00_sample_02.txt AC 24 ms 13396 KB
00_sample_03.txt AC 24 ms 11348 KB
00_sample_04.txt AC 24 ms 11348 KB
00_sample_05.txt AC 24 ms 11348 KB
01_rnd_00.txt AC 27 ms 13792 KB
01_rnd_01.txt AC 42 ms 23008 KB
01_rnd_02.txt AC 38 ms 15328 KB
01_rnd_03.txt AC 43 ms 23008 KB
01_rnd_04.txt AC 41 ms 19816 KB
01_rnd_05.txt AC 26 ms 9696 KB
01_rnd_06.txt AC 37 ms 12000 KB
01_rnd_07.txt AC 38 ms 15712 KB
01_rnd_08.txt AC 27 ms 11744 KB
01_rnd_09.txt AC 26 ms 11744 KB
01_rnd_10.txt AC 33 ms 10208 KB
01_rnd_11.txt AC 27 ms 11872 KB
01_rnd_12.txt AC 41 ms 18400 KB
01_rnd_13.txt AC 40 ms 16224 KB
01_rnd_14.txt AC 27 ms 11744 KB
01_rnd_15.txt AC 36 ms 13152 KB
01_rnd_16.txt AC 27 ms 11744 KB
01_rnd_17.txt AC 35 ms 12768 KB
01_rnd_18.txt AC 26 ms 11744 KB
01_rnd_19.txt AC 43 ms 22496 KB
02_rndhard_00.txt AC 26 ms 9696 KB
02_rndhard_01.txt AC 27 ms 11744 KB
02_rndhard_02.txt AC 29 ms 13920 KB
02_rndhard_03.txt AC 28 ms 11872 KB
02_rndhard_04.txt AC 27 ms 13792 KB
02_rndhard_05.txt AC 27 ms 13416 KB
02_rndhard_06.txt AC 27 ms 11744 KB
02_rndhard_07.txt AC 26 ms 9696 KB
02_rndhard_08.txt AC 27 ms 9696 KB
02_rndhard_09.txt AC 27 ms 11744 KB
02_rndhard_10.txt AC 27 ms 11872 KB
02_rndhard_11.txt AC 27 ms 9824 KB
02_rndhard_12.txt AC 27 ms 11744 KB
02_rndhard_13.txt AC 27 ms 11744 KB
02_rndhard_14.txt AC 27 ms 9824 KB
02_rndhard_15.txt AC 27 ms 11872 KB
02_rndhard_16.txt AC 27 ms 11744 KB
02_rndhard_17.txt AC 26 ms 11744 KB
02_rndhard_18.txt AC 27 ms 11744 KB
02_rndhard_19.txt AC 27 ms 13792 KB
02_rndhard_20.txt AC 27 ms 11744 KB
02_rndhard_21.txt AC 27 ms 11744 KB
02_rndhard_22.txt AC 28 ms 11240 KB
02_rndhard_23.txt AC 27 ms 11872 KB
02_rndhard_24.txt AC 27 ms 11744 KB
02_rndhard_25.txt AC 27 ms 11744 KB
02_rndhard_26.txt AC 27 ms 9696 KB
02_rndhard_27.txt AC 27 ms 13416 KB
02_rndhard_28.txt AC 27 ms 13792 KB
02_rndhard_29.txt AC 27 ms 11744 KB
02_rndhard_30.txt AC 26 ms 9696 KB
02_rndhard_31.txt AC 27 ms 11744 KB
02_rndhard_32.txt AC 27 ms 9824 KB
02_rndhard_33.txt AC 28 ms 13416 KB
02_rndhard_34.txt AC 27 ms 11744 KB
02_rndhard_35.txt AC 27 ms 11744 KB
02_rndhard_36.txt AC 27 ms 11744 KB
02_rndhard_37.txt AC 27 ms 13288 KB
02_rndhard_38.txt AC 26 ms 9696 KB
02_rndhard_39.txt AC 27 ms 9696 KB
03_rndhardsmall_00.txt AC 24 ms 13396 KB
03_rndhardsmall_01.txt AC 24 ms 11348 KB
03_rndhardsmall_02.txt AC 24 ms 11348 KB
03_rndhardsmall_03.txt AC 24 ms 11348 KB
03_rndhardsmall_04.txt AC 24 ms 11348 KB
03_rndhardsmall_05.txt AC 24 ms 11348 KB
03_rndhardsmall_06.txt AC 24 ms 11348 KB
03_rndhardsmall_07.txt AC 24 ms 11348 KB
03_rndhardsmall_08.txt AC 24 ms 13396 KB
03_rndhardsmall_09.txt AC 25 ms 13396 KB