POJ3041Asteroids(二分图最少顶点覆盖)

时间:2023-03-09 02:45:03
POJ3041Asteroids(二分图最少顶点覆盖)

最少顶点覆盖 = 二分图最大匹配

证明见   http://hi.baidu.com/keeponac/item/111e3438988c786b7d034b56

aaarticlea/png;base64,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" alt="" width="711" height="38" />

 #include <map>
#include <set>
#include <stack>
#include <queue>
#include <cmath>
#include <ctime>
#include <vector>
#include <cstdio>
#include <cctype>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define eps 1e-15
#define MAXN 505
#define INF 1000000007
#define MAX(a,b) (a > b ? a : b)
#define MIN(a,b) (a < b ? a : b)
#define mem(a) memset(a,0,sizeof(a)) bool G[MAXN][MAXN],vis[MAXN];
int Left[MAXN],N,M,T; bool DFS(int u)
{
for(int v=;v<=N;v++) if(G[u][v] && !vis[v])
{
vis[v] = true;
if(!Left[v] || DFS(Left[v]))
{
Left[v] = u;
return true;
}
}
return false;
} int main()
{
while(~scanf("%d%d", &N, &M))
{
mem(G); mem(Left);
int y,x;
for(int i=;i<=M;i++)
{
scanf("%d%d", &x, &y);
G[x][y] = true;
}
int ans = ;
for(int i=;i<=N;i++)
{
mem(vis);
if(DFS(i)) ans ++;
}
printf("%d\n",ans);
}
return ;
}