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

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


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

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



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

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

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

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

 

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

    }

    從k的對應(yīng)項(xiàng)出沒有可增廣路,返回false;
}

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

    輸出 匹配數(shù);
}

    然后引入幾個(gè)數(shù)據(jù)結(jié)構(gòu):adj為圖的鄰接表,visit[i]記錄點(diǎn)i是否被掃描(匹配)過,match[i]存儲了匹配的方案(點(diǎn)集Y中的點(diǎn)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

這個(gè)程序是WA的呀!!!  回復(fù)  更多評論   

<2009年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

導(dǎo)航

統(tǒng)計(jì)

常用鏈接

留言簿(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>
            亚洲裸体视频| 日韩视频国产视频| 欧美性大战久久久久久久蜜臀| 久久av最新网址| 欧美日韩性生活视频| 欧美成人有码| 激情文学综合丁香| 欧美一区亚洲一区| 性欧美暴力猛交另类hd| 欧美视频在线播放| 日韩午夜在线电影| 一区二区三区欧美视频| 欧美77777| 欧美激情一区二区三区全黄| 激情久久影院| 久久精品伊人| 久久久蜜桃精品 | 亚洲一区二区三区四区在线观看| 亚洲欧洲日本专区| 久久最新视频| 欧美成熟视频| 亚洲国产欧美不卡在线观看| 久久国产日韩| 老牛国产精品一区的观看方式| 国产在线不卡| 久久精品人人做人人爽电影蜜月| 久久久精品动漫| 黄色日韩网站视频| 美国十次成人| 亚洲黄网站在线观看| 最新国产の精品合集bt伙计| 你懂的视频一区二区| 亚洲国产精品一区| 在线一区亚洲| 国产精品日韩高清| 久久av在线看| 欧美激情精品久久久久久大尺度 | 亚洲高清二区| 免费人成精品欧美精品| 最新国产の精品合集bt伙计| 99国产一区| 国产欧美日韩免费看aⅴ视频| 欧美亚洲色图校园春色| 欧美777四色影视在线| 亚洲精品在线二区| 国产精品女主播| 欧美综合国产| 亚洲欧洲一区| 欧美专区在线| 亚洲区一区二区三区| 国产精品h在线观看| 亚洲欧美在线视频观看| 欧美 日韩 国产 一区| 一区二区三区高清在线| 国产日韩欧美成人| 奶水喷射视频一区| 亚洲欧美国产va在线影院| 狂野欧美激情性xxxx| 中文在线一区| 国内外成人免费激情在线视频| 欧美福利视频一区| 亚洲欧美在线观看| 亚洲日本中文字幕免费在线不卡| 亚洲欧美日韩久久精品| 亚洲国产精品免费| 国产精品入口尤物| 牛夜精品久久久久久久99黑人| 亚洲视频在线一区| 亚洲国产高清视频| 久久精品国产91精品亚洲| 99re国产精品| 在线日本欧美| 国产乱子伦一区二区三区国色天香| 久久青草久久| 午夜在线成人av| av成人动漫| 亚洲激情在线激情| 乱码第一页成人| 性欧美18~19sex高清播放| 亚洲另类一区二区| 亚洲高清激情| 伊人婷婷欧美激情| 国产欧美在线观看| 欧美日韩中文字幕日韩欧美| 欧美成年网站| 久久蜜臀精品av| 欧美在线日韩| 小黄鸭精品aⅴ导航网站入口| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 国产精品高清网站| 欧美激情一级片一区二区| 久久婷婷久久一区二区三区| 午夜精品久久久久久久蜜桃app| 夜夜嗨av一区二区三区| 亚洲国产精品一区在线观看不卡| 理论片一区二区在线| 久久精品九九| 欧美专区亚洲专区| 欧美综合二区| 久久成人综合视频| 久久精品一二三| 久久人人爽人人| 久久综合影视| 欧美成人精品福利| 欧美国产精品久久| 欧美激情一区二区三区高清视频| 女人天堂亚洲aⅴ在线观看| 美女诱惑一区| 蜜臀va亚洲va欧美va天堂| 模特精品在线| 欧美激情在线观看| 最近中文字幕mv在线一区二区三区四区 | 免费在线播放第一区高清av| 久久这里有精品视频| 欧美 日韩 国产一区二区在线视频 | 日韩午夜免费视频| a91a精品视频在线观看| 亚洲图片在线| 亚洲欧美综合精品久久成人| 欧美亚洲一区在线| 久久日韩精品| 欧美日韩成人一区二区| 国产精品v欧美精品v日韩精品| 国产精品v欧美精品v日韩 | 亚洲理论在线| 亚洲一二三四区| 欧美在线3区| 男同欧美伦乱| 亚洲美女中出| 欧美一区二区三区视频免费| 老司机午夜精品视频| 欧美日韩另类一区| 国产日韩在线看| 亚洲日本中文字幕区| 亚洲一区欧美一区| 久久手机精品视频| 亚洲乱码国产乱码精品精| 亚洲女人天堂成人av在线| 久久久久久久高潮| 欧美日韩一级黄| 国产主播喷水一区二区| 日韩天堂av| 久久精品30| 亚洲理论在线观看| 久久精品亚洲一区二区| 欧美精品v日韩精品v国产精品| 国产精品有限公司| 亚洲国产精品一区二区尤物区| 亚洲视频在线看| 免费不卡在线视频| 亚洲一区二区三区高清不卡| 美女福利精品视频| 国产农村妇女精品一二区| 亚洲免费不卡| 久久综合九色99| 亚洲婷婷国产精品电影人久久| 久久免费99精品久久久久久| 欧美先锋影音| 亚洲理论在线观看| 久久人人爽人人爽| 亚洲私人黄色宅男| 欧美精品一区二区三区四区 | 亚洲精品一二| 久久久一区二区三区| 亚洲私人影院在线观看| 欧美精品网站| 亚洲国产一区在线| 久久久久久久一区| 亚洲影音先锋| 欧美午夜三级| 夜夜爽www精品| 亚洲高清一区二| 久久综合九色九九| 影音先锋日韩有码| 久久精品国产免费| 亚洲女人av| 国产精品一区二区三区成人| 亚洲小说区图片区| 亚洲乱码国产乱码精品精天堂| 老巨人导航500精品| 在线观看一区二区精品视频| 久久久久国产精品一区二区| 午夜精品在线| 国产欧美日韩精品在线| 午夜在线电影亚洲一区| 亚洲无玛一区| 国产精品国产三级国产aⅴ9色| 亚洲一级在线| 一区二区三区.www| 国产精品久久九九| 亚洲综合视频网| 亚洲自拍另类| 国产一区二区成人| 久久中文久久字幕| 久久一区激情| 亚洲黄色在线观看| 亚洲精品影院在线观看| 欧美少妇一区二区| 午夜精品久久久久久99热软件| 亚洲在线免费观看|