• <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 閱讀(369) 評論(0)  編輯 收藏 引用
            青青草原精品99久久精品66| 香蕉久久永久视频| 久久精品无码av| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 热99RE久久精品这里都是精品免费| 国内精品久久久久影院亚洲| 国产婷婷成人久久Av免费高清| 色综合久久精品中文字幕首页| 国产成人久久精品一区二区三区 | 97久久综合精品久久久综合 | 国产成人精品久久| 精品久久人人做人人爽综合| 久久精品午夜一区二区福利| 国产免费福利体检区久久| 久久香蕉国产线看观看精品yw| 久久无码AV中文出轨人妻| 69SEX久久精品国产麻豆| 亚洲精品乱码久久久久久蜜桃不卡 | 91视频国产91久久久| 国产69精品久久久久9999APGF| 久久精品中文字幕有码| 国产成人久久激情91| 久久久久久亚洲Av无码精品专口| 欧美亚洲国产精品久久高清| 国产精品综合久久第一页| 久久精品免费观看| 91精品国产91热久久久久福利| 少妇高潮惨叫久久久久久| 无码专区久久综合久中文字幕| 久久亚洲AV成人无码软件| 三级三级久久三级久久| 亚洲精品无码久久毛片| 精品一二三区久久aaa片| 亚洲精品无码久久久影院相关影片| 久久精品亚洲福利| 色婷婷噜噜久久国产精品12p| 久久精品成人免费国产片小草| 人妻无码精品久久亚瑟影视| 欧美国产精品久久高清| 婷婷久久五月天| 久久99精品国产麻豆宅宅|