记录编号 189365 评测结果 AAAAAAAAAA
题目名称 [USACO Jan08] 奶牛的比赛 最终得分 100
用户昵称 Gravatar四季木哥 是否通过 通过
代码语言 C++ 运行时间 0.008 s
提交时间 2015-09-27 14:57:27 内存使用 0.35 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;

int vis[1050], bf[1050], nx[1050];
vector<int> G[1050];
vector<int> P[1050];

void dfs1(int x,int k){
    vis[x]=1;
	nx[k]++;
    int siz=G[x].size();
    for(int i=0;i<siz;i++){
    	int v=G[x][i];
    	if(!vis[v]) dfs1(v,k); 
    }
}
void dfs2(int x,int k){
    vis[x]=1;
	bf[k]++;
    int siz=P[x].size();
    for(int i=0;i<siz;i++){
		int v=P[x][i];
	    if(!vis[v]) dfs2(v,k);
	}
}

int main(void){
	freopen("contest.in","r",stdin);
	freopen("contest.out","w",stdout);
    int n, m, ans=0;
    scanf("%d%d",&n,&m);
    int u,v;
    for(int i=0;i<m;i++){
		scanf("%d%d",&u,&v);
	    G[u].push_back(v);
	    P[v].push_back(u);
	}
    for(int i=1;i<=n;i++){
	    memset(vis,0,sizeof(vis));
		dfs1(i,i);
	}
    for(int i=1;i<=n;i++){
		memset(vis,0,sizeof(vis));
		dfs2(i,i);
	}
    for(int i=1;i<=n;i++){
    	if(nx[i]+bf[i]==n+1) ans++;
	}
    printf("%d",ans);
return 0;
}