emmmmm
让你敲个匈牙利
1 #include2 #include 3 #include 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 }