• <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)  編輯 收藏 引用
            久久久国产精华液| 欧美亚洲色综久久精品国产| 久久精品国产一区| 国内精品久久久久影院网站 | 国产成人久久精品麻豆一区 | 久久国产免费| 久久精品天天中文字幕人妻| 精品国产热久久久福利| 一本久久知道综合久久| 精品欧美一区二区三区久久久| 一本色综合网久久| 精品久久久久久无码国产| 亚洲∧v久久久无码精品| 青青草原综合久久大伊人导航| 色综合久久久久综合体桃花网| 丁香久久婷婷国产午夜视频| 国产激情久久久久久熟女老人 | 久久综合久久综合亚洲| 国产一级做a爰片久久毛片| 综合网日日天干夜夜久久| 国产精品久久毛片完整版| 无码伊人66久久大杳蕉网站谷歌| 欧美伊人久久大香线蕉综合69| 国产免费福利体检区久久| 久久99中文字幕久久| 狠狠色丁香婷婷综合久久来| 久久精品夜夜夜夜夜久久| 精品永久久福利一区二区| 蜜臀av性久久久久蜜臀aⅴ麻豆 | 亚洲欧洲日产国码无码久久99| 久久免费视频1| 精品国产青草久久久久福利| 久久久久国产精品人妻| 色天使久久综合网天天| 亚洲国产成人久久综合一区77| 久久精品国产一区二区电影| 国产精品va久久久久久久| 精品久久久久久久久久中文字幕| 国产亚州精品女人久久久久久 | 国产成人综合久久久久久| 久久精品无码免费不卡|