记录编号 408298 评测结果 AAAAAAAAAA
题目名称 [HAOI 2016]食物链 最终得分 100
用户昵称 GravatarCSU_Turkey 是否通过 通过
代码语言 C++ 运行时间 0.202 s
提交时间 2017-05-24 11:24:29 内存使用 2.60 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
const int max_n=100005;
vector<int>a[max_n];
int n,m,x,y,ans[max_n],inn[max_n],out[max_n];
inline int read()
{
	char ch;
	int a=0;
	ch=getchar();
	while(!('0'<=ch&&'9'>=ch))ch=getchar();
	while('0'<=ch&&'9'>=ch)
	a=a*10+ch-'0',
	ch=getchar();
	return a;
}
inline int dfs(int x)
{
	if(ans[x])return ans[x];
	for(int i=0;i<a[x].size();i++)
	{
		int u=a[x][i];
		dfs(u);
		ans[x]+=ans[u];
	}
	if (!ans[x])ans[x]=1;
}
int main()
{
	freopen("chain_2016.in","r",stdin);
	freopen("chain_2016.out","w",stdout);
	n=read();
	m=read();
	for(int i=1;i<=m;i++)
	{
		x=read();
		y=read();
		a[y].push_back(x);
		inn[x]++;
		out[y]++;
	}int anss=0;
	for(int i=1;i<=n;i++)
	if(!inn[i]&&out[i]){
	dfs(i);anss+=ans[i];
	}
//	for(int i=1;i<=n;i++)
//	if(!inn[i]&&out[i])anss+=ans[i];
	cout<<anss;
	return 0;
}