Pagini recente » Cod sursa (job #387770) | Cod sursa (job #2582321) | Cod sursa (job #2053373) | Cod sursa (job #1023558) | Cod sursa (job #2367881)
#include <bits/stdc++.h>
using namespace std;
int n,a1,a2,b1,b2,i,j,mini,i_1,j_1,i_2,j_2;
char s[105];
int m[105][105],v[105][105];
void fil( int c1 , int c2 , int val )
{
if( c1 <= 0 || c2 <= 0 || c1 > n || c2 > n )
return;
if( m[ c1 ][ c2 ] == -1 )
return;
if( v[ c1 ][ c2 ] )
return;
v[ c1 ][ c2 ] = val;
fil( c1 + 1 , c2 , val );
fil( c1 - 1 , c2 , val );
fil( c1 , c2 + 1 , val );
fil( c1 , c2 - 1 , val );
}
int main()
{
cin>>n;
cin>>a1>>a2;
cin>>b1>>b2;
for( i = 1 ; i <= n ; i++ )
{
cin.get();
cin.get( s , 105 );
for( j = 0 ; j < strlen( s ); j++ )
m[ i ][ j + 1 ] = -( s[ j ] == '1' );
}
fil( a1 , a2 , 1 );
if( v[ b1 ][ b2 ] == 1 )
{
cout<<0;
return 0;
}
fil( b1 , b2 , 2 );
mini = 1e9;
for( i_1 = 1 ; i_1 <= n ; i_1++ )
for( j_1 = 1 ; j_1 <= n ; j_1++ )
for( i_2 = 1 ; i_2 <= n ; i_2++ )
for( j_2 = 1 ; j_2 <= n ; j_2++ )
if( v[ i_1 ][ j_1 ] == 1 && v[ i_2 ][ j_2 ] == 2 )
mini = min( mini , ( i_1 - i_2 ) * ( i_1 - i_2 ) + ( j_1 - j_2 ) * ( j_1 - j_2 ) );
cout<<mini;
}