#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<
poj 3041 Asteroids (匈牙利算法---二分图最大匹配)
| 评论 |
|
|