bzoj 1191 [HNOI2006]超级英雄Hero——二分图匹配

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1191

不就是个最大匹配么。

结果WA得不行。

看TJ后发现题面上说了一旦没回答出一道题就结束了。所以有个else break;

还是应该仔细读题呢……

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1005;
int n,m,hd[N],xnt,pre[N],ans,to[N<<1],nxt[N<<1];
bool vis[N];
void add(int x,int y)
{
    to[++xnt]=y;nxt[xnt]=hd[x];hd[x]=xnt;
}
bool dfs(int cr)
{
    for(int i=hd[cr],v;i;i=nxt[i])
        if(!vis[v=to[i]])
        {
            vis[v]=1;
            if(!pre[v]||dfs(pre[v]))
            {
                pre[v]=cr;return true;
            }
        }
    return false;
}
int main()
{
    scanf("%d%d",&m,&n);int x,y;
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d",&x,&y);
        add(i,x);if(x!=y)add(i,y);
    }
    for(int i=1;i<=n;i++)
    {
        memset(vis,0,sizeof vis);
        if(dfs(i))ans++;
        else break;//
    }
    printf("%d
",ans);
    return 0;
}
原文地址:https://www.cnblogs.com/Narh/p/9401340.html