Source Code Problem: 3041 User: zhouxc Memory: 1288K Time: 16MS Language: G++ Result: Accepted Source Code #include"stdio.h" #include"string.h" int n,k,a,b; int link[501],asteroid[501][501]; bool visit[501]; int M_Match(int s) { for(int i=1;i<=n;i++) { if(!visit[i]&&asteroid[s][i]) { visit[i]=true; if(!link[i]||M_Match(link[i])) { link[i]=s; return true; } } } return false; } int main() { // freopen("data.in","r",stdin); scanf("%d%d",&n,&k); int match=0; memset(asteroid,0,sizeof(asteroid)); memset(link,0,sizeof(link)); for(int i=1;i<=k;i++) { scanf("%d%d",&a,&b); asteroid[a][b]=1; } for(int i=1;i<=n;i++) { memset(visit,false,sizeof(visit)); if(M_Match(i)) match++; } printf("%d/n",match); // while(1); return 0; }