POJ 3041 Asteroids | 匈牙利算法模板
emmmmm
让你敲个匈牙利
1 #include<cstdio> 2 #include<algorithm> 3 #include<cstring> 4 #define N 510 5 using namespace std; 6 int adj[N][N],n,k,vis[N],bf[N],cnt; 7 int find(int x) 8 { 9 for (int i=1;i<=n;i++) 10 if (adj[x][i] && !vis[i]) 11 { 12 vis[i]=1; 13 if (!bf[i] || find(bf[i])) 14 { 15 return bf[i]=x; 16 } 17 } 18 return 0; 19 } 20 int main() 21 { 22 scanf("%d%d",&n,&k); 23 for (int i=1,x,y;i<=k;i++) 24 { 25 scanf("%d%d",&x,&y); 26 adj[x][y]=1; 27 } 28 for (int i=1;i<=n;i++) 29 { 30 memset(vis,0,sizeof(vis)); 31 if (find(i)) cnt++; 32 } 33 printf("%d",cnt); 34 return 0; 35 }