比赛 |
202110省实验桐柏一中普及组联赛 |
评测结果 |
AAAAAAAAAA |
题目名称 |
分配同桌 |
最终得分 |
100 |
用户昵称 |
该账号已注销 |
运行时间 |
0.002 s |
代码语言 |
C++ |
内存使用 |
0.60 MiB |
提交时间 |
2021-10-18 20:32:47 |
显示代码纯文本
#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;
}