poj1274 The Perfect Stall 二分图最大匹配模板题 匈牙利算法BFS

来源:互联网 发布:观相 知乎 编辑:程序博客网 时间:2024/06/05 23:34

                              POJ 1274 点击打开链接

和poj1469几乎一模一样。。

有n头牛要在m个牛栏里产nai,每个牛栏只能装一头牛,每头牛都有各自喜欢的牛栏(可以多个)。你现在知道了各头牛的信息,然后问你最多有几个牛栏会被使用。


二分图最大匹配。。。

套模板:

#include<stdio.h>#include<iostream>#include<queue>#include<vector>#include<string.h>using namespace std;int pre[305],vis[305];int ml[305],mr[305];//左集合点的匹配点  右集合点的匹配点int p,n;vector<int>V[30005];//vector存图int MaxMatch()//bfs实现匈牙利算法{    int ans=0;    memset(vis,0,sizeof(vis));    memset(ml,-1,sizeof(ml));    memset(mr,-1,sizeof(mr));    for(int i=1; i<=p; i++)    {        if(ml[i]!=-1)continue;        queue<int>Q;        Q.push(i);        pre[i]=-1;        int flag=0;//是否找到增广路        while(!Q.empty()&&!flag)        {            int v=Q.front();            Q.pop();            for(int j=0; j<V[v].size()&&!flag; j++)            {                int to=V[v][j];                if(vis[to]!=i)                {                    vis[to]=i;                    Q.push(mr[to]);                    if(mr[to]>=0)                    {                        pre[mr[to]]=v;//没找到增广路,记下路径                    }                    else//找到了                    {                        flag=1;                        int d=v;                        int e=to;                        while(d!=-1)//更改路径                        {                            int temp=ml[d];                            ml[d]=e;                            mr[e]=d;                            e=temp;                            d=pre[d];                        }                    }                }            }        }        if(flag)ans++;//找到增广路,匹配边加一条    }    return ans;}int main(){    while(~scanf("%d%d",&p,&n))    {        int num,a;        for(int i=1; i<=p; i++)        {            V[i].clear();            scanf("%d",&num);            for(int j=1; j<=num; j++)            {                scanf("%d",&a);                V[i].push_back(a);            }        }        int ans=MaxMatch();        printf("%d\n",ans);    }}


阅读全文
0 0
原创粉丝点击