比赛 假期找点事儿做题吧 评测结果 AAAATAAATA
题目名称 奶牛交通 最终得分 80
用户昵称 CSU_Turkey 运行时间 2.050 s
代码语言 C++ 内存使用 1.29 MiB
提交时间 2017-06-08 00:17:11
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int m,n,head[5005],h=1,x,y,vis[50005];
struct edge
{
	int to,next,cost;
}e[50005];
int S[50005],tail=1;
inline void edge_add(int x,int y)
{
	e[h].to=y;
	e[h].next=head[x];
	head[x]=h++;
}
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 void dfs(int x)
{
	if(!head[x])
	{
		for(int i=1;i<tail;i++)
		e[S[i]].cost++;
	}
	for(int i=head[x];i;i=e[i].next)
	{
		S[tail++]=i;
		dfs(e[i].to);
		tail--;
	}
}
int main()
{
//	freopen("1.txt","r",stdin);
	freopen("cowtraffic.in","r",stdin);
	freopen("cowtraffic.out","w",stdout);
	scanf("%d%d",&n,&m);
	for(int i=1;i<=m;i++)
{
		x=read();
	y=read();
	edge_add(y,x);
	}dfs(n);
//	for(int i=1;i<=m;i++)cout<<e[i].next<<" ";
	int max1=-0x3fffffff;
	for(int i=1;i<=m;i++)
	max1=max(max1,e[i].cost);
	cout<<max1;
	return 0;
}