Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- #define fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);
- #define ll long long
- #define ld double
- #define llu long long unsigned
- int ans = INT_MAX;
- int d[60][60];
- int dist( int a , int b , int x , int y )
- {
- return pow( abs(a - x) , 2 ) + pow( abs(b - y) , 2 );
- }
- vector < pair < int , int > > ini;
- vector < pair < int , int > > des;
- void bfs( int x , int y )
- {
- if( d[x][y] == 0 && x > -1 && y > -1 )
- {
- ini.push_back( make_pair( x , y ) );
- d[x][y] = -1;
- bfs( x-1 , y );
- bfs( x+1 , y );
- bfs( x , y+1 );
- bfs( x , y-1 );
- }
- else
- return;
- }
- void bfs1( int x , int y )
- {
- if( d[x][y] == 0 && x > -1 && y > -1 )
- {
- des.push_back( make_pair( x , y ) );
- d[x][y] = -1;
- bfs1( x-1 , y );
- bfs1( x+1 , y );
- bfs1( x , y+1 );
- bfs1( x , y-1 );
- }
- else
- return;
- }
- int main()
- {
- fast;
- memset( d , -1 , sizeof( d ) );
- int n;
- cin>>n;
- int ix , iy;
- cin>>ix>>iy;
- int dx , dy;
- cin>>dx>>dy;
- for( int i = 0 ; i < n ; i++ )
- {
- string s;
- cin>>s;
- for( int j = 0 ; j < n ; j++ )
- d[i][j] = s[j] - '0';
- }
- // for( int i = 0 ; i < n ; i++ )
- // {
- // for( int j = 0 ; j < n ; j++ )
- // cout<<d[i][j]<<" ";
- // cout<<endl;
- // }
- bfs( ix-1 , iy-1 );
- if( d[dx-1][dy-1] == -1 )
- {
- cout<<0<<endl;
- return 0;
- }
- bfs1( dx-1 , dy-1 );
- if( ix == dx && iy == dy )
- {
- cout<<0<<endl;
- return 0;
- }
- for( int i = 0 ; i < ini.size() ; i++ )
- for( int j = 0 ; j < des.size() ; j++ )
- {
- ans = min( dist( ini[i].first , ini[i].second , des[j].first , des[j].second ) , ans );
- }
- cout<<ans<<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment