• <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 閱讀(170) 評論(0)  編輯 收藏 引用 所屬分類: 代碼如詩--ACM
              1 // 1003 C++ Accepted  0.093 261 KB Ural
              2 
              3 //非此即彼思想的應(yīng)用
              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 {//輸進去的是大數(shù),返回的該大數(shù)在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)大數(shù)
             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 }
            91久久精品国产91性色也| 亚洲国产精品成人久久| 99久久99久久精品免费看蜜桃| 久久成人精品视频| 精品久久久久久中文字幕大豆网| 亚洲国产精品无码久久久秋霞2| 久久久久久久人妻无码中文字幕爆| 国产精品久久久久久久午夜片| 日韩人妻无码精品久久久不卡| 久久综合给合综合久久| 国内精品伊人久久久久av一坑| 久久久久久久91精品免费观看| 久久久青草久久久青草| 久久久久久国产精品免费无码| 国产福利电影一区二区三区,免费久久久久久久精 | 99久久精品免费看国产一区二区三区| 婷婷综合久久中文字幕| 午夜精品久久久久久99热| 国产激情久久久久影院小草| 久久婷婷五月综合97色一本一本| 欧美伊人久久大香线蕉综合69| 国产精品久久影院| 亚洲精品tv久久久久久久久| 久久久久国色AV免费看图片| 久久久不卡国产精品一区二区| 久久久久久亚洲AV无码专区| 久久人人添人人爽添人人片牛牛| 精品久久久久久久中文字幕 | 久久精品麻豆日日躁夜夜躁| 久久久精品国产| 香港aa三级久久三级老师2021国产三级精品三级在 | 亚洲日本va中文字幕久久| 久久伊人色| 久久亚洲中文字幕精品一区| 狠狠色综合久久久久尤物| 一级做a爰片久久毛片人呢| 国产精品久久久久久久久| 91久久婷婷国产综合精品青草| avtt天堂网久久精品| 一级做a爱片久久毛片| 欧美久久天天综合香蕉伊|