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 |
|
|
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 |