求助,tle 70分死活过不去了 呜呜呜呜
查看原帖
求助,tle 70分死活过不去了 呜呜呜呜
50751
mengyifei楼主2022/1/28 20:40
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstring>
using namespace std;
int n,m,e;
vector <int> g[5100];
int vis[510];
int ans;
int tmp[510];
int flag[510][510];
int find(int x){
	//cout<<x<<" "<<last<<endl;
	for(int i=0;i<g[x].size();i++){
		if(!vis[g[x][i]]&&!tmp[g[x][i]]){
			vis[g[x][i]]=x;
			return 1;
		}
	}
	for(int i=0;i<g[x].size();i++){
		if(!tmp[g[x][i]]){
			tmp[g[x][i]]=1;
			if(find(vis[g[x][i]])){
				vis[g[x][i]]=x;
				tmp[g[x][i]]=0;
				return 1;
			}
			tmp[g[x][i]]=0;
		}
	}
	return 0;
}
int main(int argc, char *argv[]) {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	scanf("%d%d%d",&n,&m,&e);
	for(int i=1;i<=e;i++){
		int x,y;
		scanf("%d%d",&x,&y);
		if(x>n||y>m) continue;
		if(flag[x][y]) continue;
		flag[x][y]=1;
		g[x].push_back(y);
	}
	for(int i=1;i<=n;i++){
		//memset(tmp,0,sizeof(tmp));
		if(find(i)){
			ans++;
		}
	}
	cout<<ans<<endl;
	return 0;
}
2022/1/28 20:40
加载中...