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

            單鏈DNA

            換了個地址:http://www.cnblogs.com/vizhen/

             

            頂點著色的Welch Powell方法

                  前些日子看了下“湖南省第二屆大學生程序設計大賽”的一些題目,看到第三題的時候,沒點什么思路,后來想了想像是圖頂點著色的問題。
                  又重新拾起了《離散數(shù)學》(哎呀,大一時候,沒學好呀)書上介紹了 Welch Powell的方法進行著色。
                  算法大致如下:
                               1.把圖中的頂點按度數(shù)減小的次序排列
                               2.用第一種顏色對第一點著色,并且按排列次序,對前面著色點不相鄰的每一點著上同樣的顏色
                               3.把第二種顏色對尚未著色的點重復(2),用第三種顏色繼續(xù),直到所有點全部上色為止
                  用c++實現(xiàn)如下: 
                            
            #include <iostream>
            #include 
            <fstream>
            #include 
            <algorithm>
            using namespace std;
            int n;
            int color[100];// 頂點i涂得顏色
            int col_kinds;
            int link[100][100];
            class Nodes

               
            public:
                    
            int degree;
                    
            int index;
                    
            bool operator>(const Nodes &n)
                    
            {
                        
            return degree>n.degree;
                    }

            }
            ;

            bool cmp(const Nodes &m,const Nodes &n)
            {
            return m.degree>n.degree;
            }

            Nodes p[
            100];


            bool Check_ok(int i,int j)
            {
                
            int k;
                
            if(link[p[i].index][p[j].index]!=0||color[j]!=0return false;//相連的情況
                for(k=0;k<j;k++)
                
            {
                    
            if(link[p[i].index][p[k].index]==0&&link[p[k].index][p[j].index]!=0)//與已經(jīng)涂的點相連
                        return false;
                }

                
            return  true;
            }


            void Welech_Powell()
            {
                 
            int i,j;
                 
                 
            for(i=0;i<n;i++)
                 
            {
                     
            if(color[i]==0)
                     
            {
                         color[i]
            =++col_kinds;
                         
            for(j=0;j<n;j++)
                         
            {
                             
            if(Check_ok(i,j))
                             
            {
                              color[j]
            =col_kinds;
                             }

                         }

                     }

                     
                 }

            }


            int main()
            {   
                
            int i,j,e,k;
                
                ifstream fin(
            "input.txt");
                
            while(fin>>n>>e)
                
            {    
                     col_kinds
            =0;
                     memset(link,
            0,sizeof(link));
                     memset(color,
            0,sizeof(color));
                     
            for(k=0;k<e;k++)
                     
            {
                         fin
            >>i>>j;
                        link[i][j]
            =link[j][i]=1;
                     }

                     
            for(i=0;i<n;i++)
                     
            {   
                         
            for(j=0;j<n;j++)
                         cout
            <<link[i][j]<<" ";
                         cout
            <<endl;
                     }

                    
                     
            //--
                      for(i=0;i<n;i++)
                     
            {    
                        p[i].index
            =i;
                        p[i].degree
            =0
                        
            for(j=0;j<n;j++)
                           p[i].degree
            +=link[i][j];
                     }

                    
                     sort(p,p
            +n,cmp);
                         Welech_Powell();
                         cout
            <<col_kinds<<endl;
                         
            for(i=0;i<n;i++)
                        cout
            <<p[i].index<<" "<<color[i]<<" "<<endl;
                }

                
            return 0;
            }

            posted on 2009-10-15 21:26 Geek.tan 閱讀(2283) 評論(0)  編輯 收藏 引用 所屬分類: 算法學習

            導航

            統(tǒng)計

            公告

            coding是我的寂寞,我是誰的寂寞

            隨筆分類(40)

            隨筆檔案(48)

            搜索

            積分與排名

            最新評論

            評論排行榜

            四虎影视久久久免费观看| 久久久久亚洲av无码专区导航 | 久久99热国产这有精品| 色综合久久中文色婷婷| 色婷婷久久久SWAG精品| 99久久精品国产免看国产一区| 热久久国产精品| 久久久久国产一区二区三区| 久久精品国产男包| 中文精品久久久久国产网址| 久久久久久久97| 国产AⅤ精品一区二区三区久久| 亚洲午夜精品久久久久久浪潮| 97久久香蕉国产线看观看| 日本亚洲色大成网站WWW久久| 日本欧美久久久久免费播放网| 久久精品无码午夜福利理论片 | 狠狠色综合网站久久久久久久高清 | 久久精品国产亚洲AV不卡| 精品国产乱码久久久久久1区2区 | 亚洲国产精品狼友中文久久久 | 亚洲午夜久久久久久噜噜噜| 国产精品天天影视久久综合网| 亚洲AⅤ优女AV综合久久久| 91精品国产综合久久香蕉| 国产成人精品白浆久久69| 亚洲欧美伊人久久综合一区二区 | 无码伊人66久久大杳蕉网站谷歌 | 久久人妻少妇嫩草AV无码专区| 人妻无码精品久久亚瑟影视 | 亚洲精品白浆高清久久久久久 | 欧美亚洲日本久久精品| 久久www免费人成看国产片| 伊人久久综在合线亚洲2019| 99久久免费国产精品热| 精品久久久久香蕉网| 久久99精品久久久久久hb无码 | 国产精品成人99久久久久 | 久久久噜噜噜久久中文福利| 久久精品国产亚洲αv忘忧草| 久久国内免费视频|