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

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 極限定律 閱讀(1331) 評論(1)  編輯 收藏 引用 所屬分類: ACM/ICPC

評論

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

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

<2009年4月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

導航

統計

常用鏈接

留言簿(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>
            亚洲成人在线视频网站| 欧美日韩精品久久| 裸体素人女欧美日韩| 久久国产精品一区二区三区| 欧美一区二区三区在线免费观看| 亚洲一区二区精品在线观看| 亚洲一区二区三区成人在线视频精品 | 亚洲三级免费观看| 亚洲国产影院| 亚洲视频第一页| 性视频1819p久久| 久久久精品午夜少妇| 欧美大胆成人| 国产精品毛片a∨一区二区三区| 国产日韩欧美视频| 亚洲福利在线视频| 一本久道久久综合中文字幕| 亚洲一区中文字幕在线观看| 久久精品男女| 亚洲高清网站| 午夜欧美精品| 欧美激情在线免费观看| 国产精品专区第二| 亚洲人成网站777色婷婷| 亚洲女人天堂av| 亚洲高清av在线| 午夜一级在线看亚洲| 欧美精品国产精品| 韩曰欧美视频免费观看| 在线一区免费观看| 免费在线播放第一区高清av| 夜夜躁日日躁狠狠久久88av| 久久久亚洲一区| 国产精品资源在线观看| 国产乱码精品一区二区三区av| 美女国内精品自产拍在线播放| 欧美日韩一区在线观看视频| 伊人久久噜噜噜躁狠狠躁| 亚洲午夜激情免费视频| 欧美成人网在线| 亚洲欧美日韩国产精品| 欧美乱人伦中文字幕在线| 黄色一区二区在线观看| 欧美一区二区视频免费观看| 一区二区电影免费在线观看| 亚洲电影下载| 亚洲国产精品激情在线观看| 欧美一区二区三区久久精品| 亚洲激情欧美| 久热国产精品| 国产精品视频免费一区| 夜夜爽99久久国产综合精品女不卡 | 久久乐国产精品| 在线一区二区视频| 欧美日韩国产区一| 一个色综合av| 亚洲日本成人| 欧美福利精品| 亚洲精品久久久久久久久久久| 久久免费视频这里只有精品| 亚洲欧美成人一区二区在线电影 | 亚洲夜间福利| aa级大片欧美| 国产精品久久国产精品99gif| 日韩网站免费观看| 亚洲激情视频网站| 欧美二区在线播放| 亚洲日本成人在线观看| 亚洲福利视频一区| 欧美成人一区二区三区片免费| 一色屋精品亚洲香蕉网站| 久久精品国产欧美激情| 欧美一区二区免费视频| 国产无遮挡一区二区三区毛片日本| 欧美一级成年大片在线观看| 性色av一区二区三区| 国产精品久久久久久超碰| 亚洲人成毛片在线播放| 免费视频久久| 久久人人97超碰国产公开结果| 在线国产精品一区| 亚洲精品日韩精品| 欧美日韩国产欧美日美国产精品| 亚洲一区二区免费| 一区二区三区视频在线看| 国产精品日韩精品欧美精品| 亚洲影音先锋| 中文网丁香综合网| 久久精品国产69国产精品亚洲 | 久久躁日日躁aaaaxxxx| 欧美制服丝袜第一页| 黄色小说综合网站| 亚洲国产视频一区二区| 国产精品乱人伦中文| 久久影院午夜片一区| 免费亚洲婷婷| 亚洲视频一区二区在线观看| 亚洲欧美国产精品va在线观看| 樱桃成人精品视频在线播放| 亚洲精品一区二区三| 国产精品爽爽ⅴa在线观看| 久久激情视频| 欧美精品在线观看| 午夜精品一区二区三区在线| 久久国产主播精品| 日韩午夜激情av| 亚洲男人的天堂在线aⅴ视频| 国内精品久久久久久 | 一本色道久久| 香蕉久久夜色精品国产| 亚洲人成绝费网站色www| 亚洲午夜精品| 亚洲精品美女久久7777777| 亚洲男女自偷自拍图片另类| 亚洲精品久久久一区二区三区| 亚洲一品av免费观看| 黄色亚洲在线| 亚洲特色特黄| 亚洲免费高清视频| 久久久久久久久久久一区 | 韩日精品视频一区| 中文一区字幕| 亚洲免费精品| 久久亚洲国产成人| 久久精品视频在线观看| 国产精品毛片在线看| 亚洲人成网站影音先锋播放| 好吊妞**欧美| 午夜久久美女| 亚洲永久字幕| 欧美日韩成人在线| 欧美激情视频在线播放| 红桃视频一区| 久久激情综合网| 欧美一区二区视频在线观看2020| 欧美啪啪一区| 亚洲激情成人| 亚洲激情影视| 欧美成人高清| 欧美激情国产日韩精品一区18| 国产欧美一区二区三区久久| 亚洲性视频h| 亚洲综合大片69999| 欧美另类一区| 国外成人在线| 亚洲日本激情| 国产综合香蕉五月婷在线| 欧美一区二区视频免费观看| 亚洲一二三级电影| 国产精品极品美女粉嫩高清在线 | 99精品国产热久久91蜜凸| 另类人畜视频在线| 欧美成人精品在线观看| 亚洲国产欧美一区二区三区同亚洲| 久久精品国产亚洲高清剧情介绍| 久久精品中文字幕免费mv| 国产亚洲精品久久久久动| 久久福利一区| 午夜精品视频在线观看一区二区| 国产精品永久免费视频| 欧美一级视频| 免费在线亚洲欧美| 亚洲精品影视| 国产精品久久夜| 香蕉久久夜色精品国产使用方法| 久久精品国产亚洲5555| 尤物99国产成人精品视频| 美国十次了思思久久精品导航| 亚洲成色777777在线观看影院| 日韩午夜高潮| 欧美日韩一区二区三区四区在线观看| 亚洲一区国产一区| 欧美一站二站| 精品av久久久久电影| 美女免费视频一区| 亚洲精品视频一区| 在线视频欧美日韩精品| 国产日韩免费| 欧美成人国产一区二区| 夜夜嗨av一区二区三区免费区| 欧美一区二区三区男人的天堂| 在线观看视频一区| 欧美性开放视频| 久久国产欧美日韩精品| aⅴ色国产欧美| 欧美a级片网| 午夜影院日韩| 99亚洲视频| 狠狠色综合网站久久久久久久| 欧美日韩国内| 久久夜色精品国产| 亚洲永久免费av| 亚洲欧洲在线看| 久久综合久色欧美综合狠狠| 99在线|亚洲一区二区| 国模私拍视频一区| 国产私拍一区| 欧美四级在线观看| 欧美va天堂va视频va在线| 午夜免费日韩视频|