记录编号 254023 评测结果 AAAAAATTTA
题目名称 [HAOI 2016]食物链 最终得分 70
用户昵称 GravatarFETS 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);
}