• <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>

            我希望你是我獨家記憶

            一段永遠封存的記憶,隨風而去
            posts - 263, comments - 31, trackbacks - 0, articles - 3
               :: 首頁 :: 新隨筆 ::  :: 聚合  :: 管理

            U1003

            Posted on 2008-09-04 21:12 Hero 閱讀(168) 評論(0)  編輯 收藏 引用 所屬分類: 代碼如詩--ACM
              1 // 1003 C++ Accepted  0.093 261 KB Ural
              2 
              3 //非此即彼思想的應用
              4 
              5 #include <stdio.h>
              6 #include <stdlib.h>
              7 #include <string.h>
              8 
              9 const int size = 10000 ;
             10 
             11 int father[size*2] ;
             12 int table[size] ;
             13 
             14 char cmd[20] ;//輸入的even或者odd
             15 int inlen ;
             16 int inn ;
             17 
             18 
             19 int Hash( int x )
             20 {//輸進去的是大數,返回的該大數在table[]中的下標
             21     int posi = x % size ;
             22     while( table[posi]!=-1 && table[posi]!=x )
             23         posi = (posi+1% size ;
             24     table[posi] = x ;
             25 
             26     return posi ;//用下標來代替(hash)大數
             27 }
             28 
             29 int Find( int x )
             30 {
             31     if( father[x] < 0 )    return x ;
             32     int fx = Find( father[x] ) ;
             33     father[x] = fx ;
             34 
             35     return fx ;
             36 }
             37 
             38 void Union( int a, int b )
             39 {
             40     int fa = Find( a ) ;
             41     int fb = Find( b ) ;
             42 
             43     if( fa != fb )
             44     {
             45         if( father[fa] <= father[fb] )
             46         {
             47             father[fa] += father[fb] ;
             48             father[fb] = fa ;
             49         }
             50         else
             51         {
             52             father[fb] += father[fa] ;
             53             father[fa] = fb ;
             54         }
             55     }
             56 }
             57 
             58 void input()
             59 {
             60     scanf( "%d"&inn ) ;
             61 
             62     memset( father, -1sizeof(father) ) ;
             63     memset( table, -1sizeof(table) ) ;
             64 }
             65 
             66 void process() 
             67 {
             68     int x, y ; int fx, fy ; int i ;
             69 
             70     for( i=1; i<=inn; i++ )
             71     {
             72         scanf( "%d %d"&x, &y ) ; getchar() ;
             73         x = Hash( x-1 ) ; fx = Find( x ) ;
             74         y = Hash( y ) ;   fy = Find( y ) ;
             75         
             76         scanf( "%s", cmd ) ;
             77         //注意判斷在不在同一個集合中要用 "=="
             78         if'e' == cmd[0] )//even--說明 x 和 y 同奇偶
             79         {
             80             //if( Find(x) != Find(y) )//不能說明一定在兩個不同的集合中
             81             //--可能存在尚未分配x和y的情況--可能在一個集合中
             82             //而Find(x)==Find(x+size)一定可以說明在兩個不同的集合中--由初始化決定
             83             if( Find(x)==Find(y+size) )//如果不在同一個集合--該cmd不成立
             84             { 
             85                 break ;
             86             }
             87             else
             88             {
             89                 Union( x,  y ) ; Union( x+size, y+size ) ;
             90             }
             91         }
             92         else//odd--說明 x 和 y 不同奇偶
             93         {
             94             if( Find(x)==Find(y) )//在同一個集合中
             95             {
             96                 break ;
             97             }
             98             else
             99             {
            100                 Union( x, y+size ) ; Union( x+size, y ) ;
            101             }
            102         }
            103     }//for
            104 
            105     printf( "%d\n", i-1 ) ;
            106 
            107     for( i=i+1; i<=inn; i++ ) 
            108     {
            109         scanf( "%d %d"&x, &y ) ;//捕捉剩余輸出
            110         scanf( "%s", cmd ) ;
            111     }
            112 }
            113 
            114 
            115 int main()
            116 {
            117     //freopen( "in.txt", "r", stdin ) ;
            118 
            119     while( scanf( "%d"&inlen ) != EOF && (inlen!=-1) )
            120     {
            121         input() ;
            122 
            123         process() ;
            124 
            125         //output() ;
            126     }
            127 
            128     return 0 ;
            129 }
            久久亚洲电影| 国产成人无码精品久久久免费| 国产精自产拍久久久久久蜜| 久久精品亚洲乱码伦伦中文| 亚洲欧美另类日本久久国产真实乱对白| 国产美女亚洲精品久久久综合| 久久精品国产精品亚洲毛片| 久久久久久一区国产精品| 国内精品九九久久精品| 亚洲国产精品一区二区久久| 国产精品久久久久久久久软件 | 日韩va亚洲va欧美va久久| 中文字幕久久波多野结衣av| 久久久国产精品网站| 久久久久久久97| 久久男人中文字幕资源站| 99久久婷婷国产综合亚洲| 色狠狠久久综合网| AAA级久久久精品无码区| av无码久久久久久不卡网站| 久久中文字幕人妻丝袜| 久久综合狠狠综合久久97色| 四虎国产精品免费久久5151| 久久大香香蕉国产| 狠狠色婷婷久久综合频道日韩 | 77777亚洲午夜久久多人| 久久久久香蕉视频| 久久精品9988| 国产精品久久久久久| 国产成人精品免费久久久久| 欧美亚洲色综久久精品国产| 久久精品国产亚洲AV蜜臀色欲| 热久久视久久精品18| 亚洲精品97久久中文字幕无码| 久久久久亚洲AV成人网人人软件| 国产亚洲精久久久久久无码| 韩国免费A级毛片久久| 久久精品国产亚洲AV大全| 久久精品欧美日韩精品| 久久国产色AV免费观看| 国产国产成人精品久久|