Submission #31911

#TimeUsernameProblemLanguageResultExecution timeMemory
31911chonkaTracks in the Snow (BOI13_tracks)C++98
100 / 100
1493 ms104988 KiB
#include<iostream>
#include<stdio.h>
#include<string>
#include<queue>
using namespace std ;

#define MAXN 4007

int n , m ;
string a[ MAXN ] ;

int used[ MAXN ][ MAXN ] ;
int ans = 0 ;

int dx[ 4 ] = { 0 , 0 , 1 , -1 } ;
int dy[ 4 ] = { 1 , -1 , 0 , 0 } ;

void bfs ( ) {
    queue < pair < int , int > > q ;
    queue < pair < int , int > > aux ;
    int i , j ;
    used[ n ][ m ] = 1 ;
    q.push ( make_pair ( n , m ) ) ;
    while ( 1 ) {
        ans ++ ;
        while ( q.empty ( ) == false ) {
            pair < int , int > p = q.front ( ) ;
            q.pop ( ) ;
            int i ;
            for ( i = 0 ; i < 4 ; i ++ ) {
                int nx , ny ;
                nx = p.first + dx[ i ] ;
                ny = p.second + dy[ i ] ;
                if ( nx < 1 || n < nx ) { continue ; }
                if ( ny < 1 || m < ny ) { continue ; }
                if ( a[ nx ][ ny ] == '.' ) { continue ; }
                if ( used[ nx ][ ny ] != 0 ) { continue ; }
                used[ nx ][ ny ] = used[ p.first ][ p.second ] + 1 ;
                if ( a[ nx ][ ny ] == a[ p.first ][ p.second ] ) {
                    q.push ( make_pair ( nx , ny ) ) ;
                }
                else {
                    aux.push ( make_pair ( nx , ny ) ) ;
                }
            }
        }
        if ( aux.empty ( ) == true ) { break ; }
        while ( aux.empty ( ) == false ) {
            q.push ( aux.front ( ) ) ;
            aux.pop ( ) ;
        }
    }
}

void input ( ) {
    cin >> n >> m ;
    int i ;
    for ( i = 1 ; i <= n ; i ++ ) {
        cin >> a[ i ] ;
        a[ i ] = '#' + a[ i ] ;
    }
}

void solve ( ) {
    bfs ( ) ;
    printf ( "%d\n" , ans ) ;
}


int main ( ) {
    ios_base::sync_with_stdio ( false ) ;
    cin.tie ( NULL ) ;
    input ( ) ;
    solve ( ) ;
    return 0 ;
}

Compilation message (stderr)

tracks.cpp: In function 'void bfs()':
tracks.cpp:21:9: warning: unused variable 'i' [-Wunused-variable]
     int i , j ;
         ^
tracks.cpp:21:13: warning: unused variable 'j' [-Wunused-variable]
     int i , j ;
             ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...