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

            Better man

            改變性格 改變命運(yùn)!

             

            圖的最小路徑覆蓋(zoj1525)


            在一個(gè)PXP的有向圖中,路徑覆蓋就是在圖中找一些路經(jīng),使之覆蓋了圖中的所有頂點(diǎn),且任何一個(gè)頂點(diǎn)有且只有一條路徑與之關(guān)聯(lián);(如果把這些路徑中的每條路徑從它的起始點(diǎn)走到它的終點(diǎn),那么恰好可以經(jīng)過圖中的每個(gè)頂點(diǎn)一次且僅一次);如果不考慮圖中存在回路,那么每每條路徑就是一個(gè)弱連通子集.

            由上面可以得出:

            1.一個(gè)單獨(dú)的頂點(diǎn)是一條路徑;

            2.如果存在一路徑p1,p2,......pk,其中p1 為起點(diǎn),pk為終點(diǎn),那么在覆蓋圖中,頂點(diǎn)p1,p2,......pk不再與其它的頂點(diǎn)之間存在有向邊.

            最小路徑覆蓋就是找出最小的路徑條數(shù),使之成為P的一個(gè)路徑覆蓋.

            路徑覆蓋與二分圖匹配的關(guān)系:

            最小路徑覆蓋=|P|-最大匹配數(shù);

            其中最大匹配數(shù)的求法是把P中的每個(gè)頂點(diǎn)pi分成兩個(gè)頂點(diǎn)pi'與pi'',如果在p中存在一條pi到pj的邊,那么在二分圖P'中就有一條連接pi'與pj''的無向邊;這里pi' 就是p中pi的出邊,pj''就是p中pj 的一條入邊;

            對于公式:最小路徑覆蓋=|P|-最大匹配數(shù);可以這么來理解;

            如果匹配數(shù)為零,那么P中不存在有向邊,于是顯然有:

            最小路徑覆蓋=|P|-最大匹配數(shù)=|P|-0=|P|;即P的最小路徑覆蓋數(shù)為|P|;

            P'中不在于匹配邊時(shí),路徑覆蓋數(shù)為|P|;

            如果在P'中增加一條匹配邊pi'-->pj'',那么在圖P的路徑覆蓋中就存在一條由pi連接pj的邊,也就是說pi與pj 在一條路徑上,于是路徑覆蓋數(shù)就可以減少一個(gè);

            如此繼續(xù)增加匹配邊,每增加一條,路徑覆蓋數(shù)就減少一條;直到匹配邊不能繼續(xù)增加時(shí),路徑覆蓋數(shù)也不 能再減少了,此時(shí)就有了前面的公式;但是這里只 是說話了每條匹配邊對應(yīng)于路徑覆蓋中的一條路徑上的一條連接兩個(gè)點(diǎn)之間的有向邊;下面來說明一個(gè)路徑覆蓋中的每條連接兩個(gè)頂點(diǎn)之間的有向邊對應(yīng)于一條匹配 邊;

            與前面類似,對于路徑覆蓋中的每條連接兩個(gè)頂點(diǎn)之間的每條有向邊pi--->pj,我們可以在 匹配圖中對應(yīng)做一條連接pi'與pj''的邊, 顯然這樣做出來圖的是一個(gè)匹配圖(這一點(diǎn)用反證法很容易證明,如果得到的圖不是一個(gè)匹配圖,那么這個(gè)圖中必定存在這樣兩條邊  pi'---pj'' 及 pi' ----pk'',(j!=k),那么在路徑覆蓋圖中就存在了兩條邊pi-->pj, pi--->pk ,那邊從pi出發(fā)的路徑就不止一條了,這與路徑覆蓋圖是矛盾的;還有另外一種情況就是存在pi'---pj'',pk'---pj'',這種情況也類似可證);

            至此,就說明了匹配邊與路徑覆蓋圖中連接兩頂點(diǎn)之間邊的一一對應(yīng)關(guān)系,那么也就說明了前面的公式成立!

             1 #include <iostream>
             2 using namespace std;
             3 int n,m;
             4 int map[250][250];
             5 bool visit[500];
             6 int l[500];//鄰接點(diǎn)
             7 bool find(int a)
             8 {
             9       for(int i=1;i<=n;++i)
            10             if(map[2*a][2*i-1]&&!visit[2*i-1])
            11             {
            12                   visit[2*i-1]=1;
            13                   if(!l[2*i-1]||find(l[2*i-1]))
            14                   {
            15                         l[2*i-1]=a;
            16                         return true;
            17                   }
            18             }
            19       return false;
            20 }
            21 int main()
            22 {
            23       int cas,a,b;
            24       scanf("%d",&cas);
            25       for(int i=1;i<=cas;++i)
            26       {
            27             memset(l,0,sizeof(l));
            28             memset(map,0,sizeof(map));
            29             scanf("%d%d",&n,&m);
            30             //把節(jié)點(diǎn)分成兩個(gè)節(jié)點(diǎn),2*i是出節(jié)點(diǎn),2*i-1是如節(jié)點(diǎn)
            31             for(int j=1;j<=m;++j)
            32             {
            33                   scanf("%d%d",&a,&b);
            34                   map[2*a][2*b-1]=1;
            35             }
            36             int ans=0;
            37             for(int i=1;i<=n;++i)
            38             {
            39                   memset(visit,0,sizeof(visit));
            40                   if(find(i))ans++;
            41             }
            42             printf("%d\n",n-ans);
            43       }
            44       return 0;
            45 }

            posted on 2009-02-05 14:36 SHFACM 閱讀(1133) 評論(1)  編輯 收藏 引用

            評論

            # re: 圖的最小路徑覆蓋(zoj1525) 2011-03-25 17:12 laoda

            膜拜……
            這個(gè)證明我找了好久了……  回復(fù)  更多評論   


            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(2)

            隨筆檔案

            文章分類

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久青青草原精品国产不卡| 久久久久亚洲AV成人网人人网站 | 久久99国产精品久久99小说| 思思久久好好热精品国产| 99精品久久精品一区二区| 91久久精品91久久性色| 午夜精品久久久久久| 99久久婷婷免费国产综合精品| 久久香蕉国产线看观看猫咪?v| 亚洲综合伊人久久大杳蕉| 精品久久久久久久中文字幕| 亚洲国产精品无码久久| 少妇久久久久久被弄到高潮| 国产精品久久国产精品99盘| 久久频这里精品99香蕉久| 久久精品国产亚洲沈樵| 国产69精品久久久久APP下载| 久久线看观看精品香蕉国产| 亚洲va国产va天堂va久久| 青草久久久国产线免观| 免费观看久久精彩视频| av无码久久久久久不卡网站| 亚洲女久久久噜噜噜熟女| 色婷婷久久综合中文久久一本| 国产精品久久久99| 国产精品久久久福利| 久久精品国产精品亚洲毛片| 亚洲国产精品无码久久久秋霞2 | 亚洲AV无码一区东京热久久| 久久最新免费视频| 99久久人人爽亚洲精品美女| 久久国产免费观看精品| 久久99精品综合国产首页| 国产精品久久国产精麻豆99网站| 久久精品国产亚洲AV麻豆网站| 无码国产69精品久久久久网站 | 久久99热这里只有精品国产 | 国产产无码乱码精品久久鸭| 久久久久久久久久久久中文字幕 | 久久久久亚洲av无码专区导航| 久久久久人妻一区精品性色av|