1. 程式人生 > >hdu-1179(匈牙利算法)

hdu-1179(匈牙利算法)

題目 https pre memset 模板 turn tail mem print

題目鏈接:

思路:找n個巫師和m個魔棒匹配的問題,匈牙利算法模板

匈牙利算法:https://blog.csdn.net/sunny_hun/article/details/80627351

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 220;
int vis[maxn],a[maxn][maxn],p[maxn],m,n;
int dfs(int x)
{
    for(int i=1;i<=n;i++)
    {
        
if(!vis[i]&&a[x][i]) { vis[i]=1; if(p[i]==-1||dfs(p[i])) { p[i]=x; return 1; } } } return 0; } int main(void) { int i,j,k,x; while(~scanf("%d%d",&n,&m)) { memset(a,
0,sizeof(a)); for(i=1;i<=m;i++) { scanf("%d",&k); for(j=1;j<=k;j++) scanf("%d",&x),a[i][x]++; } memset(p,-1,sizeof(p)); int ans=0; for(i=1;i<=m;i++) { memset(vis,0,sizeof(vis)); if(dfs(i)) ans++; } printf(
"%d\n",ans); } return 0; }

hdu-1179(匈牙利算法)