• <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 - 195,  comments - 30,  trackbacks - 0

            Description

            Description

            Severe acute respiratory syndrome (SARS), an atypical pneumonia of unknown aetiology, was recognized as a global threat in mid-March 2003. To minimize transmission to others, the best strategy is to separate the suspects from others.
            In the Not-Spreading-Your-Sickness University (NSYSU), there are many student groups. Students in the same group intercommunicate with each other frequently, and a student may join several groups. To prevent the possible transmissions of SARS, the NSYSU collects the member lists of all student groups, and makes the following rule in their standard operation procedure (SOP).
            Once a member in a group is a suspect, all members in the group are suspects.
            However, they find that it is not easy to identify all the suspects when a student is recognized as a suspect. Your job is to write a program which finds all the suspects.

            Input

            The input file contains several cases. Each test case begins with two integers n and m in a line, where n is the number of students, and m is the number of groups. You may assume that 0 < n <= 30000 and 0 <= m <= 500. Every student is numbered by a unique integer between 0 and n−1, and initially student 0 is recognized as a suspect in all the cases. This line is followed by m member lists of the groups, one line per group. Each line begins with an integer k by itself representing the number of members in the group. Following the number of members, there are k integers representing the students in this group. All the integers in a line are separated by at least one space.
            A case with n = 0 and m = 0 indicates the end of the input, and need not be processed.

            Output

            For each case, output the number of suspects in one line.

            Sample Input

            100 4
            2 1 2
            5 10 13 11 12 14
            2 0 1
            2 99 2
            200 2
            1 5
            5 1 2 3 4 5
            1 0
            0 0

            Sample Output

            4
            1
            1

            啟示1,一定注意初始化帶來的影響,1,是什么地方初始化,2,前一個case不應當對下一個造成影響
                    2,有層次性的問題一定要處理好,不要
                    3,例如重復數據不能重復初始化。
                                      cin>>t;
                                       if(father[t]<0)//必不可少
                                         father[t]=t;


            #include<iostream>
            #include<cstdlib>
            using namespace std;
              int rank[30001];
              int father[30001];
              void UNION(int a,int b)
              {
              if(a==b)return;
              else
              {
               if(rank[a]<rank[b])
               {
                father[b]=father[a];
                  }
               else
               {
                father[a]=father[b];
               } 
              }
              
              }
              int Find(int t)
              {
              int tmp=t,x;
              while(father[tmp]!=tmp)
              {
               tmp=father[tmp];
              }
              
              while(t!=father[t])
              {
                  x=t;
                  t=father[x];
               father[x]=tmp;
                 } 

                 return t;
              }
              int main()
              {
              freopen("s.txt","r",stdin);
              freopen("key.txt","w",stdout);
              int i,j,nt,t1,t,result;
              while(cin>>i>>j,i||j)
              {
              result=0;
              memset(rank,1,sizeof(rank));
              memset(father,-1,sizeof(father));
              rank[0]=0;
              father[0]=0;
             for(int k=0;k<j;k++)
             {
              cin>>nt;
              cin>>t1;
              rank[t1]=t1;
              if(father[t1]<0)
                father[t1]=t1;
              for(int m=1;m<nt;m++)
              {
               cin>>t;
               rank[t]=t;
               if(father[t]<0)
                father[t]=t;
               UNION(Find(t1),Find(t));
              }
             }
             for(int l=0;l<i;l++)
             {
              if(father[l]>=0)
              {
               if(!Find(l))
              result++;
                 }
             }
             cout<<result<<endl;
              
              }

              //system("PAUSE");
              return   0;
              }

            posted on 2009-07-03 16:51 luis 閱讀(696) 評論(0)  編輯 收藏 引用 所屬分類: 并查集*哈希表*類似
            <2012年11月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            常用鏈接

            留言簿(3)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            友情鏈接

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲精品乱码久久久久66| 伊人色综合久久天天| 久久无码AV一区二区三区| 伊人久久大香线蕉综合影院首页| 奇米影视7777久久精品人人爽 | 99久久免费国产精品热| 精品久久久久久久久久久久久久久| 久久国产三级无码一区二区| 狠狠综合久久AV一区二区三区| 久久精品成人免费网站| 狠狠综合久久AV一区二区三区| 国产精品久久久久乳精品爆 | 少妇人妻88久久中文字幕| 国内精品久久久久影院网站| 奇米影视7777久久精品| 中文成人无码精品久久久不卡| 久久综合九色综合精品| 久久久久久人妻无码| 久久香综合精品久久伊人| 中文字幕成人精品久久不卡| 久久久久亚洲av无码专区| 国产精品亚洲综合久久 | 国产精品久久久久9999| 久久婷婷五月综合97色直播| 日日狠狠久久偷偷色综合0| 国产精品久久亚洲不卡动漫| 久久99精品久久久久久动态图| 要久久爱在线免费观看| 亚洲?V乱码久久精品蜜桃| 欧美精品丝袜久久久中文字幕| 国产精品免费看久久久香蕉| 久久国产精品99精品国产987| 久久久久人妻一区精品性色av| 狼狼综合久久久久综合网| 亚洲av伊人久久综合密臀性色| 亚洲AV无码久久精品色欲| 色综合久久无码中文字幕| 一本久久知道综合久久| 久久久久久国产精品无码超碰| 久久99精品久久久久久久久久| 91精品国产高清91久久久久久|