记录编号 |
254023 |
评测结果 |
AAAAAATTTA |
题目名称 |
[HAOI 2016]食物链 |
最终得分 |
70 |
用户昵称 |
FETS 1/3 |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
3.060 s |
提交时间 |
2016-04-24 14:07:00 |
内存使用 |
9.47 MiB |
显示代码纯文本
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<string>
#include<vector>
#include<ctime>
using namespace std;
const int maxn=200050;
int n,m;
struct edge
{
int x;
int y;
int ne;
}e[maxn*2];
int ans=0;
int qdb[maxn];
int cnt=0;
int dq[maxn];
int rd[maxn];
int cd[maxn];
int q[maxn],head=1,tail=0;
int inq[maxn];
void insert(int xx,int yy)
{
e[++cnt].x=xx;
e[cnt].y=yy;
e[cnt].ne=qdb[xx];
qdb[xx]=cnt;
}
void dfs(int x)
{
for(int i=qdb[x];i;i=e[i].ne)
{
if(cd[e[i].y]==0)
{
ans++;
}
dfs(e[i].y);
}
}
/*void bfs()
{
for(int S=1;S<=n;S++)
{
if(rd[S]==0)
{
dq[S]=1;
inq[S]=1;
q[++tail]=S;
for(;head<=tail;head++)
{
for(int i=qdb[q[head]];i;i=e[i].ne)
{
int ty=e[i].y,tx=e[i].x;
if(dq[ty]==0)
dq[ty]=dq[tx];
if(ty==8)
{
printf("%d ",dq[ty]);
}
if(!inq[ty])
{
q[++tail]=ty;
inq[ty]=1;
}
}
}
}
}
}*/
int main()
{
//double tie=clock();
freopen("chain_2016.in","r",stdin);
freopen("chain_2016.out","w",stdout);
scanf("%d %d",&n,&m);
if(m==0)
{
printf("0");
return 0;
}
for(int i=1;i<=m;i++)
{
int a,b;
scanf("%d %d",&a,&b);
insert(a,b);
cd[a]++;
rd[b]++;
}
for(int i=1;i<=n;i++)
{
if(rd[i]==0)
{
dfs(i);
}
}
printf("%d",ans);
//%%旁边的CK大爷 菜狗已跪
//printf("时间已经过去了%dms",clock()-tie);
}