记录编号 |
189365 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[USACO Jan08] 奶牛的比赛 |
最终得分 |
100 |
用户昵称 |
四季木哥 |
是否通过 |
通过 |
代码语言 |
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;
}