数据过水
查看原帖
数据过水
544647
linmou楼主2023/9/20 19:03


#include<bits/stdc++.h>

using namespace std;

int _n,_m,_k,_cnt,_max,_cc,_sum;
struct p{
	int v,nt;
}_road[50514];
int _head[2514],_bj[2255],_fg[2255];
int _map[1001][1001];
int _bj1[2514],_bj2[2514],_use[2005];

void put(int a,int b){
	_road[++_cnt].v=b;
	_road[_cnt].nt=_head[a];
	_head[a]=_cnt;
}

bool dfs(int x,int tag){
	if(_bj[x]==tag)return 0;
	_bj[x]=tag;
	for(int i = _head[x];i;i=_road[i].nt){
		int v = _road[i].v;
		if(!_fg[v]||dfs(_fg[v],tag)){
			_fg[v]=x;
			return 1;
		}
	}
	return 0;
}

int main(){
	cin >> _n >> _m;
	int a,b;
	for(int i = 1;i <= _m;i++){
		cin >> a >> b;
		put(a+1,b+1);
	}
	for(int i = 1;i <= _n;i++){
		if(dfs(i,i)){
			_sum++;
		}
	}
	cout << _n-_sum << endl;
	return 0;
}
2023/9/20 19:03
加载中...