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

            Ural 1080 Map Colouring

            1080. Map Colouring

            Time Limit: 1.0 second
            Memory Limit: 16 MB
            We consider a geographical map with N countries numbered from 1 to N (0 < N < 99). For every country we know the numbers of other countries which are connected with its border. From every country we can reach to any other one, eventually crossing some borders. Write a program which determines whether it is possible to colour the map only in two colours — red and blue in such a way that if two countries are connected their colours are different. The colour of the first country is red. Your program must output one possible colouring for the other countries, or show, that such colouring is impossible.

            Input

            On the first line is written the number N. On the following N lines, the i-th line contains the countries to which the i-th country is connected. Every integer on this line is bigger than i, except the last one which is 0 and marks that no more countries are listed for country i. If a line contains 0, that means that the i-th country is not connected to any other country, which number is larger than i.

            Output

            The output contains exactly one line. If the colouring is possible, this line must contain a list of zeros and ones, without any separators between them. The i-th digit in this sequence is the colour of the i-th country. 0 corresponds to red colour, and one — to blue colour. If a colouring is not possible, output the integer −1.

            Sample

            input output
            3
                                    2 0
                                    3 0
                                    0
                                    
            010
                                    

            DFS:或BFS,或者并查集(不會(huì)用)
            這里用的DFS,用一個(gè)標(biāo)記數(shù)組,沒進(jìn)入一個(gè)聯(lián)通分圖后,標(biāo)記為0(表示一種顏色)與它相連的標(biāo)記為1(另一種顏色),
            然后與1相連的在標(biāo)記為0。 這里的標(biāo)記都是對(duì)沒有標(biāo)記過的進(jìn)行的,如果是標(biāo)記過的,就要檢查他們的標(biāo)記是否相同
            如果相同則說明,他們同色。
            //ural 1080
            #include<iostream>
            using namespace std;

            const int MAX=100;
            bool adj[MAX][MAX];
            int flg[MAX];
            int n;
            bool isPossible=true;

            void input()
            {
                 cin
            >>n;
                 
            int temp;
                 
            for(int i=1; i<=n; i++)
                 {
                         
            while(cin>>temp,temp!=0)
                         {
                                                 adj[i][temp]
            =adj[temp][i]=true;
                         }
                 }
            }

            void dfs(int i)
            {
                 
            if(isPossible==false)return ;
                 
            if(flg[i]==-1)flg[i]=0;
                 
            for(int j=1; j<=n; j++)
                 {
                         
            if(adj[i][j])
                         {
                                      
            if(flg[j]==-1){ flg[j]=flg[i]==0? 1:0;  dfs(j); } 
                                      
            else if(flg[j]==flg[i])isPossible=false;
                                      
                         }
                 }
                 
            }

            int main()
            {
                memset(adj,
            0,sizeof adj);
                
                input();
                
            for(int i=1; i<=n; i++
                       flg[i]
            =-1;  
                
                flg[
            1]=0;
                
            for(int i=1; i<=n; i++)
                        dfs(i);
                
                
            if(isPossible==false)cout<<-1<<endl;
                
            else { 
                     
            for(int k=1; k<=n; k++)
                         cout
            <<flg[k];
                     cout
            <<endl;
                       }
                         
                
                system(
            "pause");
                
            return 0;
            }

            posted on 2010-07-31 17:17 田兵 閱讀(301) 評(píng)論(0)  編輯 收藏 引用 所屬分類: URAL

            <2010年8月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            2930311234

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(2)

            隨筆分類(65)

            隨筆檔案(65)

            文章檔案(2)

            ACM

            搜索

            積分與排名

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            亚洲精品无码成人片久久| 无码人妻少妇久久中文字幕蜜桃| 久久青青草原精品影院| 久久久久女教师免费一区| 久久人人爽人人爽人人av东京热 | 久久精品国产免费一区| 中文成人无码精品久久久不卡 | 久久精品麻豆日日躁夜夜躁| 精品国产乱码久久久久软件| 波多野结衣AV无码久久一区| 99久久99久久精品免费看蜜桃| 无码8090精品久久一区| 久久精品国产亚洲沈樵| 精品熟女少妇AV免费久久| 国产精品美女久久久免费| 久久久久久久波多野结衣高潮 | 精品久久久久中文字| 国产综合精品久久亚洲| 久久九九精品99国产精品| 一本大道久久东京热无码AV| 无码专区久久综合久中文字幕| 久久精品午夜一区二区福利| 国产69精品久久久久9999| 午夜精品久久久久久毛片| 要久久爱在线免费观看| 亚洲AⅤ优女AV综合久久久| 九九热久久免费视频| 亚洲精品国产成人99久久| 1000部精品久久久久久久久| 91精品国产91久久综合| 热re99久久精品国99热| 精品久久久中文字幕人妻| 亚洲欧美国产日韩综合久久| 亚洲国产精品成人久久蜜臀| 日本国产精品久久| 性做久久久久久免费观看| 色妞色综合久久夜夜| 99久久精品免费看国产一区二区三区| 久久伊人中文无码| 国产精品成人久久久| 亚洲精品国精品久久99热一|