Submission #11599167


Source Code Expand

using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;

namespace EX20
{
    public class Solve
    {
        public static void Main(string[] args)
        {
            new Atc001TasksDfs_a();
        }
    }
    public class Arc031_2
    {
        char umi = 'x';
        char riku = 'o';
        char[][] arr = new char[12][];
        bool[,] check = new bool[12, 12];
        int[] vy = { 1, 0, -1, 0 };
        int[] vx = { 0, 1, 0, -1 };

        public Arc031_2()
        {
            arr[0] = Enumerable.Repeat(umi, 12).ToArray();
            arr[11] = Enumerable.Repeat(umi, 12).ToArray();
            for (int i = 1; i <= 10; i++)
                arr[i] = $"{umi}{Ex.Read}{umi}".ToCharArray();

            for (int i = 0; i < 12; i++)
                for (int j = 0; j < 12; j++)
                    check[i, j] = true;

            if (Isok())
            {
                Write(true);
                return;
            }

            for (int i = 1; i <= 10; i++)
                for (int j = 1; j <= 10; j++)
                    if (arr[i][j] == umi)
                    {
                        arr[i][j] = riku;
                        if (Isok())
                        {
                            Write(true);
                            return;
                        }
                        arr[i][j] = umi;
                    }

            Write(false);
        }

        public void Clear()
        {
            for (int i = 1; i <= 10; i++)
                for (int j = 1; j <= 10; j++)
                    check[i, j] = (arr[i][j] == umi);
        }

        public bool Empty()
        {
            for (int i = 1; i <= 10; i++)
                for (int j = 1; j <= 10; j++)
                    if (!check[i, j])
                        return false;
            return true;
        }

        public void Isok(int i, int j)
        {
            for (int k = 0; k < 4; k++)
            {
                var x = i + vy[k];
                var y = j + vx[k];
                if (arr[x][y] == riku && !check[x, y])
                {
                    check[x, y] = true;
                    Isok(x, y);
                }
            }
        }

        public bool Isok()
        {
            Clear();

            for (int i = 1; i <= 10; i++)
                for (int j = 1; j <= 10; j++)
                {
                    if (arr[i][j] == riku)
                    {
                        Isok(i, j);
                        return Empty();
                    }
                }
            return true;
        }

        public void Write(bool b)
        {
            if (b) Console.WriteLine("YES");
            else Console.WriteLine("NO");
        }
    }
    public class Atc001TasksDfs_a
    {
        /// <summary>
        /// 街の南北の長さとして整数H
        /// </summary>
        int h;
        /// <summary>
        /// 東西の長さとして整数W
        /// </summary>
        int w;
        /// <summary>
        /// 格子状の街の各区画における状態
        /// s : その区画が家であることを表す。
        /// g : その区画が魚屋であることを表す。
        /// . : その区画が道であることを表す。
        /// # : その区画が塀であることを表す。
        /// </summary>
        char[][] arr;
        bool[][] check;
        int[] vy = { 1, 0, -1, 0 };
        int[] vx = { 0, 1, 0, -1 };

        public Atc001TasksDfs_a()
        {
            var i = Input();
            Write(dfs(i.Item1, i.Item2));
        }

        bool dfs(int i, int j)
        {
            if (arr[i][j] == '#') return false;
            if (check[i][j]) return false;
            check[i][j] = true;

            if (arr[i][j] == 'g')
            {
                return true;
            }


            for (int k = 0; k < 4; k++)
            {
                var x = i + vy[k];
                var y = j + vx[k];
                if (x >= 0 && y >= 0 && x < h && y < w)
                {
                    if (dfs(x, y)) return true;
                }
            }
            return false;
        }

        Tuple<int, int> Input()
        {
            var l1 = Ex.ReadIntArray();
            h = l1[0];
            w = l1[1];
            arr = new char[h][];
            check = new bool[h][];
            for (int i = 0; i < h; i++)
            {
                arr[i] = Ex.Read.ToCharArray();
                check[i] = new bool[w];
            }
            for (int i = 0; i < h; i++)
            {
                var idx = arr[i].ToList().IndexOf('s');
                if (idx >= 0)
                {
                    return Tuple.Create(i, idx);
                }
            }
            return Tuple.Create(0, 0);
        }

        public void Write(bool b)
        {
            if (b) Console.WriteLine("YES");
            else Console.WriteLine("NO");
        }
    }
    public class ABC_
    {
        public ABC_()
        {

        }
    }
    public static class Ex
    {
        public static void Cw(object s)
        {
            Console.WriteLine(s);
        }
        public static void Cw(bool b)
        {
            if (b) Cw("Yes");
            else Cw("No");
        }

        public static string Read { get { return Console.ReadLine().Trim(); } }
        public static int ReadInt { get { return int.Parse(Read); } }
        public static long ReadLong { get { return long.Parse(Read); } }
        public static double ReadDouble { get { return double.Parse(Read); } }
        public static string[] ReadArray() { return Read.Split(' '); }
        public static int[] ReadIntArray() { return Read.Split(' ').Select(s => int.Parse(s)).ToArray(); }
        public static long[] ReadLongArray() { return Read.Split(' ').Select(s => long.Parse(s)).ToArray(); }
        public static string[] ReadArray(long N) { var ret = new string[N]; for (long i = 0; i < N; ++i) ret[i] = Read; return ret; }
        public static int[] ReadIntArray(long N) { var ret = new int[N]; for (long i = 0; i < N; ++i) ret[i] = ReadInt; return ret; }
        public static long[] ReadLongArray(long N) { var ret = new long[N]; for (long i = 0; i < N; ++i) ret[i] = ReadLong; return ret; }
    }
}

Submission Info

Submission Time
Task A - 深さ優先探索
User return
Language C# (Mono 4.6.2.0)
Score 0
Code Size 6515 Byte
Status WA
Exec Time 40 ms
Memory 25684 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 100
Status
WA × 5
WA × 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 WA 25 ms 11360 KB
00_min_02.txt WA 25 ms 9312 KB
00_min_03.txt WA 25 ms 11476 KB
00_min_04.txt WA 25 ms 9428 KB
00_min_05.txt WA 26 ms 11476 KB
00_min_06.txt WA 26 ms 11360 KB
00_min_07.txt WA 25 ms 11360 KB
00_min_08.txt WA 26 ms 11360 KB
00_sample_01.txt WA 25 ms 11360 KB
00_sample_02.txt WA 25 ms 11476 KB
00_sample_03.txt WA 25 ms 9312 KB
00_sample_04.txt WA 26 ms 11360 KB
00_sample_05.txt WA 26 ms 11360 KB
01_rnd_00.txt WA 27 ms 11476 KB
01_rnd_01.txt WA 30 ms 16352 KB
01_rnd_02.txt WA 31 ms 15444 KB
01_rnd_03.txt WA 31 ms 15572 KB
01_rnd_04.txt WA 32 ms 15200 KB
01_rnd_05.txt WA 27 ms 11476 KB
01_rnd_06.txt WA 36 ms 16724 KB
01_rnd_07.txt WA 31 ms 13664 KB
01_rnd_08.txt WA 27 ms 11360 KB
01_rnd_09.txt WA 28 ms 13524 KB
01_rnd_10.txt WA 33 ms 9940 KB
01_rnd_11.txt WA 28 ms 13408 KB
01_rnd_12.txt WA 28 ms 12244 KB
01_rnd_13.txt WA 30 ms 13920 KB
01_rnd_14.txt WA 28 ms 15456 KB
01_rnd_15.txt WA 32 ms 16980 KB
01_rnd_16.txt WA 28 ms 13524 KB
01_rnd_17.txt WA 35 ms 12884 KB
01_rnd_18.txt WA 28 ms 13524 KB
01_rnd_19.txt WA 40 ms 25684 KB
02_rndhard_00.txt WA 28 ms 13524 KB
02_rndhard_01.txt WA 27 ms 11476 KB
02_rndhard_02.txt WA 29 ms 13524 KB
02_rndhard_03.txt WA 28 ms 9428 KB
02_rndhard_04.txt WA 28 ms 15456 KB
02_rndhard_05.txt WA 28 ms 13524 KB
02_rndhard_06.txt WA 28 ms 15572 KB
02_rndhard_07.txt WA 27 ms 13408 KB
02_rndhard_08.txt WA 28 ms 13408 KB
02_rndhard_09.txt WA 27 ms 11476 KB
02_rndhard_10.txt WA 27 ms 11360 KB
02_rndhard_11.txt WA 27 ms 11360 KB
02_rndhard_12.txt WA 27 ms 9312 KB
02_rndhard_13.txt WA 27 ms 11360 KB
02_rndhard_14.txt WA 28 ms 15456 KB
02_rndhard_15.txt WA 28 ms 15456 KB
02_rndhard_16.txt WA 27 ms 11360 KB
02_rndhard_17.txt WA 27 ms 11360 KB
02_rndhard_18.txt WA 27 ms 9312 KB
02_rndhard_19.txt WA 27 ms 11476 KB
02_rndhard_20.txt WA 27 ms 11476 KB
02_rndhard_21.txt WA 27 ms 11348 KB
02_rndhard_22.txt WA 27 ms 9428 KB
02_rndhard_23.txt WA 28 ms 13408 KB
02_rndhard_24.txt WA 28 ms 13524 KB
02_rndhard_25.txt WA 28 ms 13408 KB
02_rndhard_26.txt WA 27 ms 11360 KB
02_rndhard_27.txt WA 27 ms 11360 KB
02_rndhard_28.txt WA 28 ms 13408 KB
02_rndhard_29.txt WA 28 ms 13408 KB
02_rndhard_30.txt WA 27 ms 11360 KB
02_rndhard_31.txt WA 28 ms 13524 KB
02_rndhard_32.txt WA 27 ms 11476 KB
02_rndhard_33.txt WA 27 ms 13408 KB
02_rndhard_34.txt WA 28 ms 13408 KB
02_rndhard_35.txt WA 27 ms 13524 KB
02_rndhard_36.txt WA 27 ms 13408 KB
02_rndhard_37.txt WA 27 ms 13408 KB
02_rndhard_38.txt WA 27 ms 11476 KB
02_rndhard_39.txt WA 28 ms 13408 KB
03_rndhardsmall_00.txt WA 25 ms 11360 KB
03_rndhardsmall_01.txt WA 26 ms 13408 KB
03_rndhardsmall_02.txt WA 25 ms 9428 KB
03_rndhardsmall_03.txt WA 25 ms 9428 KB
03_rndhardsmall_04.txt WA 25 ms 9428 KB
03_rndhardsmall_05.txt WA 25 ms 9428 KB
03_rndhardsmall_06.txt WA 26 ms 11476 KB
03_rndhardsmall_07.txt WA 25 ms 11476 KB
03_rndhardsmall_08.txt WA 25 ms 9428 KB
03_rndhardsmall_09.txt WA 25 ms 9428 KB