您的位置:首页 > 其它

hdu2063(二分图匹配 匈牙利算法模板题)

2017-09-03 19:56 274 查看
存一下模板

#include<bits/stdc++.h>
using namespace std;

const int maxn=505;
int G[maxn][maxn],vis[maxn],pre[maxn];
int k,m,n,temp1,temp2,sum;

bool found(int x)
{
for (int i = 1;i <= n;i++)
{
if(G[x][i]&&!vis[i])
{
vis[i]=1;
if(pre[i] == 0||found(pre[i]))
{
pre[i] = x;
return 1;
}
}
}
return 0;
}

int main()
{
while (~scanf("%d",&k)&&k)
{
memset(G,0,sizeof G);
memset(pre,0,sizeof pre);
scanf("%d %d",&m,&n);
sum=0;

for (int i = 0;i < k;i ++)
{
scanf("%d %d",&temp1,&temp2);
G[temp1][temp2] = 1;
}

for (int i = 1;i <= m;i ++)
{
memset(vis,0,sizeof vis);
if (found(i))
{
sum++;
}
}

printf("%d\n",sum);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: