比赛 202110省实验桐柏一中普及组联赛 评测结果 AAAAAAAAAA
题目名称 分配同桌 最终得分 100
用户昵称 HeSn 运行时间 0.002 s
代码语言 C++ 内存使用 0.60 MiB
提交时间 2021-10-18 20:37:14
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
struct edge{
    int t,n;
}e[20010];
int hd[10010]={0},cnt=0,n,m,p[10010]={0},ans=0;
bool v[10010]={0};
void add(int x,int y)
{
    e[++cnt].t=y;
    e[cnt].n=hd[x];
    hd[x]=cnt;
}
bool mc(int i)
{
    for(int j=hd[i];j;j=e[j].n)
    {
        if(v[e[j].t]==0)
        {
            v[e[j].t]=1;
            if(p[e[j].t]==0||mc(p[e[j].t])==1)
            {
                p[e[j].t]=i;
                return 1;
            }
        }
    }
    return 0;
}
int main(){
    freopen("tongzhuo.in","r",stdin);
    freopen("tongzhuo.out","w",stdout);
    cin>>n>>m;
    int x,y;
    while(cin>>x>>y&&x!=-1&&y!=-1)
    {
        add(x,y);
    }
    for(int i=1;i<=m;i++)
    {
        memset(v,0,sizeof(v));
        if(mc(i)==1)
        ans++;
    }
    cout<<ans<<endl;
    return 0;
}