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

            poj 1274 The Perfect Stall


            二分圖的最大匹配,加一個(gè)源點(diǎn),這個(gè)源點(diǎn)到左邊所有頂點(diǎn)加一條邊,權(quán)值為1. 。同理,加一個(gè)終點(diǎn),所有右邊的定點(diǎn)到這個(gè)終點(diǎn)有條邊,權(quán)值為1. 這樣二分圖的最大匹配就轉(zhuǎn)換成了最大流問(wèn)題。

            #include<iostream>
            #include
            <queue>
            #include
            <cstring>
            using namespace std;
            const int MAX=405;
            int cap[MAX][MAX]={0};
            int flow[MAX][MAX]={0};
            int pre[MAX],m[MAX];
            int N, M,S,T;
            const int INF=10000000;

            int bfs(int s)
            {
                memset(m,
            0,sizeof m);  
                memset(pre,
            0,sizeof pre);
                queue
            <int> q;
                q.push(s);
                m[s]
            =INF;
                
            while(!q.empty())
                {
                        
            int u=q.front(); q.pop();
                        
            for(int v=0; v<=N+M+1; v++)
                                
            if(!m[v]&&cap[u][v]>flow[u][v])
                                {
                                     pre[v]
            =u;
                                     m[v]
            = m[u]>cap[u][v]-flow[u][v]?cap[u][v]-flow[u][v]:m[u];
                                     q.push(v);
                                }
                }
                
               
            if(m[T]==0)return 0;
               
               
            for(int u=T; u!=S ; u=pre[u])
               {
                       flow[pre[u]][u]
            +=m[T];
                       flow[u][pre[u]]
            -=m[T];
               }
               
            return m[T];
            }

            int main()
            {
                
                
            while(cin>>N>>M)
                {    memset(cap,
            0,sizeof cap);
                     memset(flow,
            0,sizeof flow);
                     
            for(int i=1; i<=N; i++)
                     {
                        
            int c,e;
                        cin
            >>c;
                        
            for(int j=1; j<=c; j++)
                               {
                                     cin
            >>e;
                                     e
            =e+N;
                                     cap[i][e]
            =1;
                               } 
                     } 
                     S
            =0
                     T
            =N+M+1;
                     
            for(int i=1; i<=N; i++)
                        cap[
            0][i]=1;
                        
                     
            for(int i=1; i<=M; i++)
                        cap[N
            +i][T]=1;
                
                     
            int ans=0;
                     
            while(1)
                     {
                        
            int temp=bfs(S);
                        
            if(temp==0)break;
                        
            else ans+=temp;
                     }
                
                     cout
            <<ans<<endl;
                }   
                system(
            "pause");
                
            return 0;
            }

            posted on 2010-08-30 10:09 田兵 閱讀(264) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): 圖論題

            <2010年6月>
            303112345
            6789101112
            13141516171819
            20212223242526
            27282930123
            45678910

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(2)

            隨筆分類(lèi)(65)

            隨筆檔案(65)

            文章檔案(2)

            ACM

            搜索

            積分與排名

            最新隨筆

            最新評(píng)論

            閱讀排行榜

            伊人久久精品影院| 久久中文字幕一区二区| 亚洲国产精品久久久久| 久久精品欧美日韩精品| 伊人久久大香线蕉成人| 国产精品久久久久久久app| 伊人 久久 精品| 国产99久久久国产精品小说| 亚洲国产高清精品线久久 | 亚洲国产精品一区二区三区久久 | 精品国产91久久久久久久 | 亚洲AV无码久久精品色欲| 久久久这里只有精品加勒比| 久久精品国产一区二区三区不卡| 一本久久久久久久| 久久精品嫩草影院| 久久精品免费网站网| 麻豆精品久久久久久久99蜜桃| 久久这里有精品| 亚洲欧美日韩中文久久| 欧美日韩精品久久免费| 久久人人爽人人爽人人片AV东京热 | 亚洲Av无码国产情品久久| 综合久久给合久久狠狠狠97色| 亚洲中文字幕伊人久久无码| 久久天天躁狠狠躁夜夜不卡 | 观看 国产综合久久久久鬼色 欧美 亚洲 一区二区 | 久久久久高潮综合影院| 一本色道久久99一综合| 亚洲精品国精品久久99热一| 2021久久精品国产99国产精品| 伊人久久综合热线大杳蕉下载| 国产精品久久久久久福利69堂| 亚洲伊人久久成综合人影院 | 一本大道久久a久久精品综合| 热久久这里只有精品| 无码人妻久久一区二区三区免费| 日韩十八禁一区二区久久| 国产99精品久久| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 久久精品无码一区二区三区日韩|