poj 3041 Asteroids (匈牙利算法---二分图最大匹配)

2014-11-23 22:08:33 · 作者: · 浏览: 4
#include
#include
using namespace std;
const int MAXN=501*2;
vector G[MAXN];
int N,K;
int match[MAXN];
bool used[MAXN];

void add_edge(int u,int v){
	G[u].push_back(v);
	G[v].push_back(u);
}
bool dfs(int v){
	used[v]=1;
	for(int i=0;i
>N>>K){ for(int i=0;i>u>>v; add_edge(u,v+N); } int res=0; memset(match,-1,sizeof(match)); for(int v=1;v<=N*2;v++){ if(match[v]<0){ memset(used,0,sizeof(used)); if(dfs(v)) res++; } } cout<