WA#7,求调
查看原帖
WA#7,求调
1105993
Misserina楼主2024/11/6 19:42
#include <bits/stdc++.h>
using namespace std;
int m,N,res,x[500005],y[500005],xmat[20005],ymat[20005],s,tmp[40005],st[20005];
bool xmarked[20005],ymarked[20005];
vector<int> xto[20005];//,yto[20005];
bool dfs(int n) {
    int k=st[n];
	for (int i=k;i<xto[n].size();i++) {
		int Y=xto[n][i];
        st[n]=i+1;
		if (Y==xmat[n]) continue;
		if (!ymarked[Y] || dfs(ymat[Y])) {
			xmat[n]=Y;
			ymat[Y]=n;
			ymarked[Y]=1;
			return 1;
		}
	}
	return 0;
}
int main() {
	scanf("%d%d",&m,&N);
	scanf("%d",&s);
	for (int i=1;i<=s;i++) {
		scanf("%d%d",&x[i],&y[i]);
		xto[x[i]].push_back(y[i]);
		//yto[y[i]].push_back(x[i]);
	}
	for (int i=1;i<=m;i++) {
		//memset(xmarked,0,sizeof(xmarked));
		//memset(ymarked,0,sizeof(ymarked));
		if (dfs(i)) res++;
	}
	printf("%d",res);
	return 0;
}
2024/11/6 19:42
加载中...