不知为何MLE了
代码如下
# include <bits/stdc++.h>
using namespace std ;
struct pnt
{
short x , y ;
} tmp , w , p ;
char c ;
queue <pnt> q ;
const short dx [4] = { 1 , 0 , -1 , 0 } , dy [4] = { 0 , 1 , 0 , -1 } ;
int main ( )
{
short n , m ;
cin >> n >> m ;
bool a [n + 1] [m + 1] ;
for ( short i = 1 ; i <= n ; i ++ )
{
for ( short j = 1 ; j <= m ; j ++ )
{
cin >> c ;
a [i] [j] = ( c == '.' ? 0 : 1 ) ;
}
}
w . x = w . y = 1 ;
q . push ( w ) ;
while ( q . size ( ) )
{
p = q . front ( ) ;
q . pop ( ) ;
a [p . x] [p . y] = 1 ;
if ( p . x == m && p . y == n )
{
cout << "Yes" << endl ;
return 0 ;
}
for ( short i = 0 ; i < 4 ; i ++ )
{
tmp . x = p . x + dx [i] ;
tmp . y = p . y + dy [i] ;
if ( tmp . x > 0 && tmp . x <= m && tmp . y > 0 && tmp . y <= n && ( ! a [tmp . x] [tmp . y] ) )
{
q . push ( tmp ) ;
}
}
}
cout << "No" << endl ;
return 0 ;
}