青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

POJ 1274 The Perfect Stall 二分圖最大匹配

Description

Farmer John completed his new barn just last week, complete with all the latest milking technology. Unfortunately, due to engineering problems, all the stalls in the new barn are different. For the first week, Farmer John randomly assigned cows to stalls, but it quickly became clear that any given cow was only willing to produce milk in certain stalls. For the last week, Farmer John has been collecting data on which cows are willing to produce milk in which stalls. A stall may be only assigned to one cow, and, of course, a cow may be only assigned to one stall.
Given the preferences of the cows, compute the maximum number of milk-producing assignments of cows to stalls that is possible.

Input

The input includes several cases. For each case, the first line contains two integers, N (0 <= N <= 200) and M (0 <= M <= 200). N is the number of cows that Farmer John has and M is the number of stalls in the new barn. Each of the following N lines corresponds to a single cow. The first integer (Si) on the line is the number of stalls that the cow is willing to produce milk in (0 <= Si <= M). The subsequent Si integers on that line are the stalls in which that cow is willing to produce milk. The stall numbers will be integers in the range (1..M), and no stall will be listed twice for a given cow.

Output

For each case, output a single line with a single integer, the maximum number of milk-producing stall assignments that can be made.

Sample Input

5 5
2 2 5
3 2 3 4
2 1 5
3 1 2 5
1 2

Sample Output

4

Source


先介紹一些二分圖的基本概念:

二分圖
    二分圖是圖論中的一種特殊模型。
 設G=(V,E)是一個無向圖,如果頂點V可分割為兩個互不相交的子集(A,B),并且圖中的每條邊(i,j)所關聯的兩個頂點i和j分別屬于這兩個不同的頂點集(i∈A,j∈B),則稱圖G為一個二分圖。
 如圖就是一個二分圖。



二分圖的匹配
 給定一個二分圖G,在G的一個子圖M中,M的邊集中的任意兩條邊都不依附于同一個頂點,則稱M是一個匹配。
 選擇這樣的邊數最大的子集稱為圖的最大匹配問題(maximal matching problem)
 如果一個匹配中,圖中的每個頂點都和圖中某條邊相關聯,則稱此匹配為完全匹配,也稱作完備匹配。
 求二分圖最大匹配可以用最大流或者匈牙利算法。

最大匹配
 給定一個二分圖G,在G的一個子圖M中,M的邊集中的任意兩條邊都不依附于同一個頂點,則稱M是一個匹配。
 選擇這樣的邊數最大的子集稱為圖的最大匹配問題(maximal matching problem)
 如果一個匹配中,圖中的每個頂點都和圖中某條邊相關聯,則稱此匹配為完全匹配,也稱作完備匹配。

匈牙利算法
 求最大匹配的一種顯而易見的算法是:先找出全部匹配,然后保留匹配數最多的.但是這個算法的復雜度為邊數的指數級函數.因此,需要尋求一種更加高效的算法。
 增廣路的定義(也稱增廣軌或交錯軌):
 若P是圖G中一條連通兩個未匹配頂點的路徑,并且屬M的邊和不屬M的邊(即已匹配和待匹配的邊)在P上交替出現,則稱P為相對于M的一條增廣路徑。
 由增廣路的定義可以推出下述三個結論:
 1-P的路徑長度必定為奇數,第一條邊和最后一條邊都不屬于M.。
 2-P經過取反操作可以得到一個更大的匹配M'。
 3-M為G的最大匹配當且僅當不存在相對于M的增廣路徑。

    引用Matrix67大牛blog上的一句話概括下求二分圖最大匹配的匈牙利算法:從二分圖中找出一條路徑來,讓路徑的起點和終點都是還沒有匹配過的點,并且路徑經過的連線是一條沒被匹配、一條已經匹配過,再下一條又沒匹配這樣交替地出現。找到這樣的路徑后,顯然路徑里沒被匹配的連線比已經匹配了的連線多一條,于是修改匹配圖,把路徑里所有匹配過的連線去掉匹配關系,把沒有匹配的連線變成匹配的,這樣匹配數就比原來多1個。不斷執行上述操作,直到找不到這樣的路徑為止。
    從上面這段話,可以構造出匈牙利算法的算法輪廓:

 

bool 尋找從k出發的對應項出的可增廣路{
    
while(j與k鄰接){
        
if(j不在增廣路上){
            把j加入增廣路;
            
if(j是未蓋點 或者 從j的對應項出發有可增廣路)
                則從k的對應項出有可增廣路,返回true;
            修改j的對應項為k;
        }

    }

    從k的對應項出沒有可增廣路,返回false;
}

void 匈牙利hungary(){
    
for i->1 to n{
        
if(則從i的對應項出有可增廣路)
            匹配數
++;
    }

    輸出 匹配數;
}

    然后引入幾個數據結構:adj為圖的鄰接表,visit[i]記錄點i是否被掃描(匹配)過,match[i]存儲了匹配的方案(點集Y中的點i匹配X中的match[i],初始值為-1)。

#include <iostream>
#include 
<vector>
using namespace std;

const int MAXN = 201;
bool visit[MAXN];
int n,m,mark[MAXN];
vector
< vector<int> > adj;

bool dfs(int pos){
    
int i,j,pre,len=adj[pos].size();
    
for(i=0;i<len;i++){
        j
=adj[pos][i];
        
if(!visit[j]){
            visit[j]
=true,pre=mark[j],mark[j]=pos;
            
if(pre==-1 || dfs(pre))
                
return true;
            mark[j]
=pre;
        }

    }

    
return false;
}

int hungary(){
    
int i,ans=0;
    
for(i=1;i<=n;i++){
        memset(visit,
false,sizeof(visit));
        
if(dfs(i)) ans++;
    }

    
return ans;
}

int main(){
    
int i,j,t;
    
while(scanf("%d %d",&n,&m)!=EOF){
        memset(mark,
-1,sizeof(mark));
        adj.assign(n
+1,vector<int>());
        
for(i=1;i<=n;i++){
            scanf(
"%d",&t);
            
while(t--){
                scanf(
"%d",&j);
                adj[i].push_back(j);
            }

        }

        printf(
"%d\n",hungary());
    }

    
return 0;
}


 

 

posted on 2009-06-01 15:33 極限定律 閱讀(1334) 評論(1)  編輯 收藏 引用 所屬分類: ACM/ICPC

評論

# re: POJ 1274 The Perfect Stall 二分圖最大匹配 2009-08-27 16:56 11111111

這個程序是WA的呀!!!  回復  更多評論   

<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統計

常用鏈接

留言簿(10)

隨筆分類

隨筆檔案

友情鏈接

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            午夜精品福利视频| 久久免费视频观看| 国产精品久久久久999| 亚洲综合日本| 亚洲制服欧美中文字幕中文字幕| 国产精品老牛| 久热精品视频在线观看一区| 久久久999精品视频| 亚洲二区在线视频| 亚洲精品久久久蜜桃| 欧美激情欧美激情在线五月| 亚洲午夜极品| 欧美在线日韩| 亚洲精品乱码久久久久| 一区二区三区精品在线| 国产精品一区二区你懂得| 久久亚洲春色中文字幕久久久| 久久免费视频网站| 一区二区国产日产| 午夜精品久久久久久久蜜桃app | 最新精品在线| 亚洲最新色图| 国产亚洲欧美日韩精品| 亚洲高清视频一区二区| 国产精品国产三级国产a| 久久永久免费| 欧美日精品一区视频| 久久精品二区三区| 欧美国产激情二区三区| 欧美影院午夜播放| 欧美激情中文不卡| 久久综合九色综合欧美就去吻| 欧美日韩国产美| 久久亚洲精品一区二区| 国产精品电影网站| 亚洲福利视频网站| 国内精品久久久久久久影视麻豆 | 亚洲欧美日本国产有色| 亚洲国产精品精华液网站| 亚洲一区二区三区精品动漫| 亚洲国产日韩欧美在线图片| 亚洲——在线| 一区二区激情| 毛片av中文字幕一区二区| 欧美亚洲免费高清在线观看| 欧美精品电影在线| 欧美成人国产va精品日本一级| 国产精品视频精品视频| 日韩亚洲不卡在线| 亚洲精品在线视频| 久久视频在线视频| 久久久久九九九九| 国产美女诱惑一区二区| 亚洲私拍自拍| 亚洲午夜视频在线| 欧美美女福利视频| 亚洲欧洲视频在线| 亚洲激情网站| 欧美成人午夜影院| 亚洲风情亚aⅴ在线发布| 一区二区自拍| 葵司免费一区二区三区四区五区| 久久久99免费视频| 红桃av永久久久| 久久久国产精品一区二区三区| 久久精品av麻豆的观看方式| 国产日韩欧美黄色| 欧美一区二区三区在线| 欧美伊人久久| 国产中文一区| 老司机精品视频网站| 欧美大片免费久久精品三p| 亚洲国产成人tv| 欧美chengren| 91久久亚洲| 午夜精品短视频| 国产亚洲精品久久久久婷婷瑜伽| 欧美一区二区三区电影在线观看| 久久久噜噜噜久久狠狠50岁| 韩国三级电影久久久久久| 久久亚洲精品一区二区| 欧美激情亚洲精品| 亚洲一二三区在线| 国产精品日韩一区二区三区| 欧美亚洲一区二区三区| 免费久久久一本精品久久区| 亚洲日本aⅴ片在线观看香蕉| 欧美日本成人| 午夜精品久久久久久久久 | 亚洲精品社区| 欧美日韩亚洲不卡| 性欧美xxxx视频在线观看| 蜜臀91精品一区二区三区| 亚洲免费av电影| 国产美女精品在线| 欧美电影美腿模特1979在线看| 亚洲裸体俱乐部裸体舞表演av| 午夜精品久久久久久久久久久久久| 国产综合自拍| 欧美日韩国产成人高清视频| 午夜精品一区二区三区在线视| 免费在线观看成人av| 亚洲视频一二| 精品va天堂亚洲国产| 欧美日韩一区二区免费在线观看 | 亚洲美女视频在线免费观看| 欧美一区二区三区在线观看| 亚洲经典一区| 国产深夜精品| 欧美午夜一区二区福利视频| 久久久精品性| 亚洲欧美日韩国产另类专区| 亚洲第一中文字幕在线观看| 欧美一区二视频在线免费观看| 91久久久久久| 黄色成人在线网站| 欧美香蕉视频| 欧美福利在线观看| 久久久欧美一区二区| 亚洲永久免费观看| 日韩一区二区免费看| 亚洲电影在线观看| 另类尿喷潮videofree| 亚洲欧美日韩国产一区二区三区 | 国产一区二区三区视频在线观看| 欧美激情第8页| 久久尤物视频| 久久精品国产第一区二区三区最新章节 | 国产一区二区三区免费在线观看| 欧美日韩在线观看视频| 欧美电影在线观看完整版| 久久激情视频久久| 香蕉久久久久久久av网站| 一区二区三区国产在线观看| 亚洲精品欧美专区| 亚洲黄网站黄| 91久久夜色精品国产九色| 欧美成年人网站| 免费在线亚洲| 欧美大片一区二区| 欧美国产一区视频在线观看 | 一本大道av伊人久久综合| 亚洲丰满在线| 亚洲激情一区二区| 亚洲人成7777| 亚洲精品综合久久中文字幕| 亚洲三级网站| 一本久道久久综合中文字幕| 一本一本久久a久久精品牛牛影视| 亚洲日韩中文字幕在线播放| 亚洲精品一区二区三| 99国产麻豆精品| 在线亚洲欧美专区二区| 亚洲在线中文字幕| 亚洲欧美视频一区二区三区| 欧美一区二区在线视频| 久久精品视频在线| 欧美成人一区二区三区片免费| 亚洲成色www久久网站| 亚洲精品久久久久久久久久久 | 久久久av毛片精品| 老司机午夜精品视频在线观看| 蜜月aⅴ免费一区二区三区 | 亚洲女ⅴideoshd黑人| 久久精品亚洲精品国产欧美kt∨| 裸体素人女欧美日韩| 欧美黄色免费网站| 一本色道久久88亚洲综合88| 午夜老司机精品| 另类国产ts人妖高潮视频| 欧美伦理一区二区| 国产精品网站一区| 91久久精品国产91性色| 亚洲一区二区三区四区五区午夜 | 亚洲一二三区在线| 久久影音先锋| 99精品久久久| 久久精品亚洲精品| 欧美日韩专区| 激情视频亚洲| 亚洲尤物视频网| 乱人伦精品视频在线观看| 亚洲精品日产精品乱码不卡| 亚洲综合成人婷婷小说| 久久久久久久久久看片| 国产精品99免费看 | 国内精品久久久久久久影视蜜臀| 亚洲国产日韩欧美在线动漫| 香蕉成人伊视频在线观看| 欧美福利电影网| 欧美亚洲综合另类| 欧美日在线观看| 亚洲国产一区二区a毛片| 香蕉成人伊视频在线观看| 亚洲国语精品自产拍在线观看| 欧美一区二区三区视频免费播放| 欧美精品一区三区| 亚洲电影在线| 久久综合色88| 亚洲欧美日韩精品一区二区|