#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
bool a[505][505];
bool used[505];
int mat[505];
int n;
bool crosspath(int k){
int i;
for(i=1;i<=n;i++)
if(a[k][i]==1&&used[i]==0){
used[i]=1;
if(mat[i]==0||crosspath(mat[i])){
mat[i]=k;
return 1;
}
}
return 0;
}
int main(){
int i;
int k;
int row,col;
scanf("%d%d",&n,&k);
for(i=1;i<=k;i++){
scanf("%d%d",&row,&col);
a[row][col]=1;
}
int match=0;
for(i=1;i<=n;i++){
memset(used,0,sizeof(used));
if(crosspath(i))
match++;
}
printf("%d\n",match);
return 0;
}
poj3041 Asteroids
最新推荐文章于 2020-06-28 16:41:15 发布