1. 程式人生 > >[poj] 3041 Asteroids

[poj] 3041 Asteroids

esp ring 最大 clas ble i++ cnblogs ret over

原題

本題為最小點覆蓋,而最小點覆蓋=最大二分圖匹配
//最小點覆蓋:用最少的點(左右兩邊集合的點)讓每條邊都至少和其中一個點關聯。

#include<cstdio>
#include<cstring>
#define N 510
using namespace std;
int edge[N][N],n,m,lover[N],ans;
bool vis[N];

bool find(int x)
{
    for (int i=1;i<=n;i++)
    if (edge[x][i] && !vis[i])
    {
        vis[i]=1
; if (!lover[i] || find(lover[i]))v { lover[i]=x; return 1; } } return 0; } int main() { scanf("%d%d",&n,&m); for (int i=1,a,b;i<=m;i++) { scanf("%d%d",&a,&b); edge[a][b]=1; } for (int i=1
;i<=n;i++) { memset(vis,0,sizeof(vis)); if (find(i)) ans++; } printf("%d\n",ans); return 0; }

[poj] 3041 Asteroids