这个数据,不行啊!加了个(double)clock()/CLOCKS_PER_SEC就过了!
#include<bits/stdc++.h>
using namespace std;
int n,m,ans;
vector<int> w[10010];
bool vis[10010];
queue<int> q;
bool bfs(int now){
memset(vis,0,sizeof(vis));
vis[now]=1;
q.push(now);
while(!q.empty()){
int now=q.front();
q.pop();
for(register int i=0;i<w[now].size();i++){
int t=w[now][i];
if(!vis[t]){
vis[t]=1;
q.push(t);
}
}
}
for(register int i=1;i<=n;i++){
if(!vis[i]) return 0;
}
return 1;
}
int main(){
scanf("%d%d",&n,&m);
while(m--){
int x,y;
scanf("%d%d",&x,&y);
w[y].push_back(x);
}
for(register int i=1;i<=n;i++){
if(bfs(i)) ans++;
}
printf("%d",ans);
return 0;
}