模板code:
vector<int>ve[N]; bool mark[N]; int girl[N]; bool find(int x){ for(int i=0;i<ve[x].size();i++){ if(!mark[ve[x][i]]){ mark[ve[x][i]]=1; if(girl[ve[x][i]]==0||find(girl[ve[x][i]])){ girl[ve[x][i]]=x; return 1; } } } return 0; } void KM{ int ans=0; for(int i=1;i<=n;i++){ memset(mark,0,sizeof mark); if(find(i)) ans++; } cout<<ans<<endl; }