• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            #include <iostream>
            #include 
            <queue>

            using namespace std;

            bool  g[4][4];
            int   binary[16]= 124816326412825651210242048409681921638432768 };
            bool  visited[65538];

            int change( bool gg[4][4] )
            {
             
            int num= 0;
             
            int t= 15;
             
             
            for ( int i= 0; i< 4++i )
                
            for ( int j= 0; j< 4++j )
                 
            {
               
            if ( gg[i][j] ) num+= binary[t];
               
               t
            --;
              }

              
             
            return num;  
            }


            void recover( int data, bool temp[4][4] )
            {
             
            int  re[16];
             
            int  t= 15;
             
             memset( re, 
            0sizeof(re) );
             
            while ( data!= 0 )
             
            {
              re[t]
            = ( data% 2 );
              
              data
            /= 2;
              t
            -- ;
             }

             t
            = 0;

             
            for ( int i= 0; i< 4++i )
                 
            for ( int j= 0; j< 4++j )
                 
            {
               temp[i][j]
            = ( re[t]== 1 );
               t
            ++;
              }
             
            }


            struct Node
            {
             
            int value;
             
            int steps;
             
             Node()
             
            {}
             
             Node( 
            int a, int b )
             :value(a), steps(b)
             
            {}
            }
            ;

            void copy( bool b1[4][4], bool b2[4][4] )
            {
             
            for ( int i= 0; i< 4++i )
               
            for ( int j= 0; j< 4++j )
                 b2[i][j]
            = b1[i][j];
            }


            void print( bool b[4][4] )
            {
             
            for ( int i= 0; i< 4++i )
             
            {
              
            for ( int j= 0; j< 4++j )
              cout 
            << b[i][j] << ' ';
              
              cout 
            << endl;
             }

            }


            int main()
            {
             
            for ( int i= 0; i< 4++i )
             
            {
                
            for ( int j= 0; j< 4++j )
                
            {
               
            char ch;
               scanf(
            "%c",&ch);
               
               g[i][j]
            = ( ch== 'b' );
              }

              
              getchar();
            }

             
             memset( visited, 
            falsesizeof(visited) ); 
             queue
            <Node> q;
             
             q.push( Node( change(g), 
            0 ) );
             visited[ change(g) ]
            = true;
             
            bool  ans= false;
             
             
            while ( !q.empty() )
             
            {
              
            bool  temp[4][4];
              Node  t
            = q.front();
              q.pop();
              
              
            if ( t.value== 0 || t.value== 65535 )
              
            {
               printf(
            "%d", t.steps );
               ans
            = true;
               
               
            break;
              }

              
              recover( t.value, temp );
              
              
            for ( int i= 0; i< 4++i )
                  
            for ( int j= 0; j< 4++j )
                  
            {
                
            bool  tt[4][4];
                copy( temp, tt );

                tt[i][j]
            = !tt[i][j];
                
            if ( i- 1>= 0 ) tt[i-1][j]= !tt[i-1][j];
                
            if ( i+ 1< 4 )  tt[i+1][j]= !tt[i+1][j];
                
            if ( j- 1>= 0 ) tt[i][j-1]= !tt[i][j-1];
                
            if ( j+ 1< 4 )  tt[i][j+1]= !tt[i][j+1];
                
                
            int   curr= change( tt );
                
                
            if ( !visited[curr] )
                
            {
                 q.push( Node( curr, t.steps
            + 1) );
                 visited[curr]
            = true;
                }

               }

             }

             
            if ( !ans ) printf("Impossible");

             
            return 0;
            }


            posted on 2008-11-06 12:40 Darren 閱讀(367) 評論(0)  編輯 收藏 引用
            久久人人爽人人爽人人av东京热| 伊人久久大香线蕉综合网站| 久久亚洲国产成人影院| 一本伊大人香蕉久久网手机| 久久AV高清无码| 九九精品99久久久香蕉| 久久天天躁狠狠躁夜夜96流白浆| 亚洲精品国产美女久久久| 久久久久久精品免费看SSS| 狠狠色综合网站久久久久久久高清| 久久精品国产亚洲一区二区三区| 精品久久久久久国产三级 | 狠狠色伊人久久精品综合网 | 三级三级久久三级久久| 99精品久久精品一区二区| 久久久久免费精品国产| 久久国产欧美日韩精品| 久久福利青草精品资源站免费 | 一本久久a久久精品vr综合| 国内精品九九久久精品| 国产精品久久国产精品99盘| 久久精品国产半推半就| 久久久久女教师免费一区| 久久久国产打桩机| 日本欧美久久久久免费播放网| 久久国产免费观看精品3| 国产午夜精品理论片久久 | 久久综合香蕉国产蜜臀AV| 国产一级持黄大片99久久| 久久久久国产| 人妻丰满AV无码久久不卡| 精品久久久久中文字幕一区| 久久久久青草线蕉综合超碰| 久久久青草久久久青草| 久久99热这里只有精品66| 国产国产成人精品久久| 2021国内精品久久久久久影院| 国产一区二区三区久久精品| 欧美日韩精品久久久久| 国产成人99久久亚洲综合精品| 狠狠色噜噜色狠狠狠综合久久 |