输入样例: 7 5 1 2 3 2 2 4 4 5 4 6 输出样例: 3 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=220; int n,m,t; int d[N][N],vis[N]; int match[N]; bool find(int x){ for(int i=1;i<=n;i++){ if(d[x][i]&&!vis[i]){ vis[i]=1; if(match[i]==0||find(match[i])){ match[i]=x; return true; } } } return false; } int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=m;i++){ int x,y; scanf("%d%d",&x,&y); d[x][y]=1; } for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) d[i][j]|=d[i][k]&d[k][j]; int res=0; for(int i=1;i<=n;i++){ memset(vis,0,sizeof vis); if(find(i)) res++; } cout<<n-res; return 0; }