#include<iostream> #include<memory.h> #include<stack> #include<string> #include<cmath> #include<map> #include<algorithm> #include<sstream> #include<set> #include<queue> using namespace std; int N,M; vector<int>v[1001];//用來存鄰接關係 int con[1024][1024];//兩個點之間是否能夠傳達消息 int visited[1001];//是否已經訪問 int src;//出發點 void dfs(int vec) { if(visited[vec]==1) return; visited[vec]=1; con[src][vec]=1; con[vec][src]=1; for(vector<int>::iterator it=v[vec].begin();it!=v[vec].end();++it) { dfs(*it); } } int main() { cin>>N>>M; for(int i=1;i<=M;i++) { int src,tar; cin>>src>>tar; v[src].push_back(tar); } for(int i=1;i<=N;i++) { memset(visited,0,sizeof(visited)); src=i; dfs(i); } int ans=0; for(int i=1;i<=N;i++) { for(int j=1;j<=N;j++) { if(con[i][j]!=1) break; if(j==N) ans++; } } cout<<ans; return 0; }