[poj] 3041 Asteroids
阿新 • • 發佈:2017-12-01
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