Submission #163177


Source Code Expand

<?php
$DEBUG = 0;
//$DEBUG = 1;

if ($DEBUG)
{
    ini_set('display_errors', 'On');
    ini_set('error_reporting', E_ALL & ~E_NOTICE);
    $time_s = microtime(TRUE);
}

# 読み込み
fscanf(STDIN, "%d %d", $sizeX, $sizeY);
fscanf(STDIN, "%d %d", $startX, $startY);
fscanf(STDIN, "%d %d", $goalX, $goalY);

$arrMaze = array();

for ($i = 0; $i < $sizeX; $i++)
{
    for ($j = 0; $j < $sizeY; $j++)
    {
        $arrMaze[$i][$j] = "";
    }
}
// ステップ数
//$arrMazeStep = $arrMaze;
$arrMazeStep = array();

for ($i = 0; $i < $sizeY; $i++)
{
    fscanf(STDIN, "%s", $tmp);
    for ($j = 0; $j < strlen($tmp); $j++)
    {
        $arrMaze[$i][$j] = substr($tmp, $j, 1);
    }
}

//if ($DEBUG) dumpX($arrMaze);
//if ($DEBUG) dumpX($arrMazeStep);

$currX = $startX - 1;
$currY = $startY - 1;

$arrMazeStep[$currX][$currY] = 0;

$arrMove = array(
                array("dx" => "-1", "dy" => "0"),
                array("dx" => "1", "dy" => "0"),
                array("dx" => "0", "dy" => "-1"),
                array("dx" => "0", "dy" => "1"),
);

$q = array();

$tmpArray = array();
$tmpArray['x'] = $currX;
$tmpArray['y'] = $currY;
$tmpArray['s'] = 0;
$arrMazeStep[$currX][$currY] = 0;

array_unshift($q, $tmpArray);
if ($DEBUG) var_dump($q);

while(TRUE)
{
    $arr = array_shift($q);
    $arrMazeStep[$arr['x']][$arr['y']] = $arr['s'];
    //dumpX($arrMazeStep);
    
    foreach ($arrMove as $v)
    {
        //echo "Z";
        $tmpArray = array();
        $tmpArray['x'] = $arr['x'] + $v['dx'];
        $tmpArray['y'] = $arr['y'] + $v['dy'];
        $tmpArray['s'] = $arr['s'] + 1;
        if ($arrMaze[$tmpArray['x']][$tmpArray['y']] == '.')
        {
            //echo "A";
            if (!isset($arrMazeStep[$tmpArray['x']][$tmpArray['y']]))
            {
                if ($DEBUG) echo "A";
                $q[] = $tmpArray;
                $arrMazeStep[$tmpArray['x']][$tmpArray['y']] = $tmpArray['s'];
            } elseif ($arrMazeStep[$tmpArray['x']][$tmpArray['y']] > $tmpArray['s'])
            {
                if ($DEBUG) echo "B";
                $q[] = $tmpArray;
            } else
            {
                //echo "X";
            }
        }
    }
    //var_dump($q);
    //echo count($q) . PHP_EOL;
    if (count($q) == 0) break;
}
if ($DEBUG) echo "answer is ... ";
echo $arrMazeStep[$goalX-1][$goalY-1].PHP_EOL;
if ($DEBUG) echo "FINISH\n";

function dumpX($arr)
{
    global $sizeX;
    global $sizeY;
    
    echo "\n";
    for ($i = 0; $i < $sizeX; $i++)
    {
        for ($j = 0; $j < $sizeY; $j++)
        {
            printf("%02d ", $arr[$i][$j]);
        }
        echo "\n";
    }
    echo "\n";
}

if ($DEBUG)
{
    $time_f = microtime(TRUE);
    printf("time = %1.3f sec \n", $time_f - $time_s);
}

Submission Info

Submission Time
Task C - 幅優先探索
User takepan
Language PHP (PHP 5.3.10)
Score 100
Code Size 2877 Byte
Status AC
Exec Time 75 ms
Memory 4976 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 100 / 100
Status
AC × 3
AC × 25
Set Name Test Cases
Sample subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt
All subtask0_sample01.txt, subtask0_sample02.txt, subtask0_sample03.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask1_11.txt, subtask1_12.txt, subtask1_13.txt, subtask1_14.txt, subtask1_15.txt, subtask1_16.txt, subtask1_17.txt, subtask1_18.txt, subtask1_19.txt, subtask1_20.txt, subtask1_21.txt, subtask1_22.txt
Case Name Status Exec Time Memory
subtask0_sample01.txt AC 42 ms 3808 KB
subtask0_sample02.txt AC 43 ms 3816 KB
subtask0_sample03.txt AC 75 ms 4968 KB
subtask1_01.txt AC 62 ms 4656 KB
subtask1_02.txt AC 59 ms 4648 KB
subtask1_03.txt AC 61 ms 4716 KB
subtask1_04.txt AC 75 ms 4968 KB
subtask1_05.txt AC 75 ms 4976 KB
subtask1_06.txt AC 67 ms 4896 KB
subtask1_07.txt AC 47 ms 4452 KB
subtask1_08.txt AC 48 ms 4444 KB
subtask1_09.txt AC 61 ms 4716 KB
subtask1_10.txt AC 51 ms 4584 KB
subtask1_11.txt AC 74 ms 4964 KB
subtask1_12.txt AC 72 ms 4956 KB
subtask1_13.txt AC 62 ms 4708 KB
subtask1_14.txt AC 47 ms 4452 KB
subtask1_15.txt AC 61 ms 4700 KB
subtask1_16.txt AC 62 ms 4712 KB
subtask1_17.txt AC 66 ms 4832 KB
subtask1_18.txt AC 66 ms 4828 KB
subtask1_19.txt AC 60 ms 4704 KB
subtask1_20.txt AC 60 ms 4636 KB
subtask1_21.txt AC 62 ms 4712 KB
subtask1_22.txt AC 59 ms 4712 KB