bzoj1191

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/syh0313/article/details/87996907

二分图匹配模板

要注意的是按顺序答题,即一道题答不上来直接终止

/**************************************************************

    Problem: 1191

    User: syh0313

    Language: C++

    Result: Accepted

    Time:32 ms

    Memory:6020 kb

****************************************************************/

#include <iostream>

#include <cstdio>

#include <cstdlib>

#include <cstring>

#include <string>

using namespace std;

int n,m,mp[1100][1100],ans,lnk[1100];

bool ud[1100];

bool dfs(int x)

{

    for (int i=0;i<m;i++)

    if (mp[x][i] && !ud[i])

    {

        ud[i]=1;

        if (lnk[i]==-1 || dfs(lnk[i])) {lnk[i]=x; return 1;}

    }

return 0;

}

int main()

{

    scanf("%d%d",&m,&n); memset(lnk,-1,sizeof lnk);

    for (int i=0;i<n;i++)

    {int xx,yy; scanf("%d%d",&xx,&yy); mp[i][xx]=1; mp[i][yy]=1;}

    for (int i=0;i<n;i++)

    {memset(ud,0,sizeof ud); if (dfs(i)) ans++;else break;}

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

return 0;

}

猜你喜欢

转载自blog.csdn.net/syh0313/article/details/87996907