#include using namespace std; #include using namespace atcoder; int main(void) { int n,m; cin >> n >> m; vector u(m); vector v(m); dsu g(n); vector outdeg(n); vector indeg(n); for(int i=0;i> u[i] >> v[i]; --u[i]; --v[i]; g.merge(u[i],v[i]); ++outdeg[u[i]]; ++indeg[v[i]]; } auto ccs=g.groups(); int ans=-1; for(auto cc: ccs){ if(cc.size()>1){ ++ans; } int tmp=0; for(auto p: cc){ tmp+=abs(outdeg[p]-indeg[p]); } tmp/=2; ans+=max(tmp-1,0); } cout << ans << endl; return 0; }