1 条题解

  • 0
    @ 2022-7-25 11:28:54

    今天就属于批人写出个批代码(

    题目:n <= 100( 那没事了 )怎么都不能TLE立刻想到暴搜,不信你看AC记录这代码是多少ms多少MB才跑完的(

    用到了bfs,肯定不是最优解,所以代码应该还会改,不过先放在这里

    #include<bits/stdc++.h>
    using namespace std;
    int n , k , r , ans ;
    bool road[ 10001 ][ 10001 ] ;
    bool flag[ 10001 ] ;
    vector<int> cow ;
    queue<int> q ;
    bool bfs( int b )
    {
        while( !q.empty() )
        {
            int a = q.front() ;
            q.pop() ;
            if( a == b ) return 1 ;
            if( a + n <= n * n and !road[ a ][ a + n ] and !flag[ a + n ] ) 
            {
                flag[ a + n ] = 1 ;
                q.push( a + n ) ;
            }
            if( a - n > 0 and !road[ a ][ a - n ] and !flag[ a - n ] )
            {
                flag[ a - n ] = 1 ;
                q.push( a - n ) ;
            }
            if( a % n != 0 and !road[ a ][ a + 1 ] and !flag[ a + 1 ] ) 
            {
                flag[ a + 1 ] = 1 ;
                q.push( a + 1 ) ;
            }
            if( a % n != 1 and !road[ a ][ a - 1 ] and !flag[ a - 1 ] ) 
            {
                flag[ a - 1 ] = 1 ;
                q.push( a - 1 ) ;
            }
        }
        return 0 ;
    }
    int main()
    {
        ios::sync_with_stdio( 0 ) ;
        cin.tie( 0 ) ;
        cin >> n >> k >> r ;
        for( int i = 1 ; i <= r ; i ++ )
        {
            int tes1 , tes2 , tes3 , tes4 ;
            cin >> tes1 >> tes2 >> tes3 >> tes4 ;
            int tes5 = ( tes1 - 1 ) * n + tes2 ;
            int tes6 = ( tes3 - 1 ) * n + tes4 ;
            road[ tes5 ][ tes6 ] = 1 ;
            road[ tes6 ][ tes5 ] = 1 ;
        }
        for( int i = 1 ; i <= k ; i ++ )
    	{
            int tes1 , tes2 ;
            cin >> tes1 >> tes2 ;
        	cow.push_back( ( tes1 - 1 ) * n + tes2  ) ;
        }
    	for( int i = 0 ; i < cow.size() ; i ++ )
        {
            for( int j =  i + 1 ; j < cow.size() ; j ++ )
            {
                memset( flag , false , sizeof( flag ) ) ;
                flag[ cow[ i ] ] = 1 ;
                q = queue<int>() ;
                q.push( cow[ i ] ) ;
                if( !bfs( cow[ j ] ) ) ans ++ ;
            }
        }
        cout << ans ;
        return 0;
    }
    
    • 1

    信息

    ID
    1953
    时间
    1000ms
    内存
    256MiB
    难度
    4
    标签
    (无)
    递交数
    63
    已通过
    31
    上传者