• <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 }
            亚洲国产另类久久久精品黑人| 久久国产精品-久久精品| 国产女人aaa级久久久级| 久久最近最新中文字幕大全| 中文字幕成人精品久久不卡| 日本亚洲色大成网站WWW久久| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久亚洲日韩精品一区二区三区| 亚洲综合熟女久久久30p| 久久久久久久综合日本亚洲 | Xx性欧美肥妇精品久久久久久| 天堂无码久久综合东京热| 亚洲国产精品无码久久SM| 久久精品国产福利国产秒| 伊人久久五月天| 色综合久久精品中文字幕首页| 伊人久久大香线蕉综合5g| 91亚洲国产成人久久精品网址| 国产精品中文久久久久久久| 婷婷久久综合九色综合98| 午夜精品久久久久| 一本伊大人香蕉久久网手机| 亚洲中文字幕无码久久精品1| 夜夜亚洲天天久久| 99久久这里只有精品| 久久久久久久91精品免费观看| 热久久国产精品| 久久精品毛片免费观看| 欧美日韩精品久久久久| 一级做a爰片久久毛片毛片| 亚洲国产精品婷婷久久| av无码久久久久不卡免费网站| 亚洲中文字幕无码久久综合网| 伊人色综合久久天天人守人婷 | 成人亚洲欧美久久久久| 久久99久久99小草精品免视看| 色综合久久无码五十路人妻| 99久久国产精品免费一区二区| 久久久久久精品无码人妻| 久久婷婷国产剧情内射白浆| 伊人 久久 精品|