AcWing861.二分图的最大匹配[操作系统入门]

编程

AcWing 861. 二分图的最大匹配

#include <bits/stdc++.h>

using namespace std;

const int N=510,M=2e5+10;

int n1,n2,m;

int h[N],e[M],ne[M],idx;

int match[N];

bool st[N];

void add(int a,int b){

e[idx]=b;

ne[idx]=h[a];

h[a]=idx++;

}

bool find(int x){

for(int i=h[x];i!=-1;i=ne[i]){

int j=e[i];

if(!st[j]){

st[j]=true;

if(match[j]==0||find(match[j])){

match[j]=x;

return true;

}

}

}

return false;

}

int main(){

scanf("%d%d%d",&n1,&n2,&m);

memset(h,-1,sizeof h);

while(m--){

int a,b;

scanf("%d%d",&a,&b);

add(a,b);

}

int res=0;

for(int i=1;i<=n1;i++){

memset(st,false,sizeof st);

if(find(i))res++;

}

printf("%d",res);

return 0;

}

AcWing 861. 二分图的最大匹配

原文:https://www.cnblogs.com/wiseXu/p/13432678.html

以上是 AcWing861.二分图的最大匹配[操作系统入门] 的全部内容, 来源链接: utcz.com/z/519069.html

回到顶部