记录编号 160716 评测结果 AAAAAAAAAA
题目名称 [NOIP 2013]车站分级 最终得分 100
用户昵称 Gravatarforever 是否通过 通过
代码语言 C++ 运行时间 0.953 s
提交时间 2015-04-29 10:51:32 内存使用 1.28 MiB
显示代码纯文本
#include<iostream>
#include<cstdlib>
#include<queue>
#include<cstring>
#include<cstdio>
using namespace std;
const int MAXX=1001;
bool lian[MAXX][MAXX],a[MAXX];
int m,n;
int geshu,s,temp,u;
int x,y,b[MAXX],dsa,ru[MAXX];
queue<int>q;
int main()
{   freopen("level2013.in","r",stdin);
	freopen("level2013.out","w",stdout);
	scanf("%d %d",&n,&m);
	for(int i=1;i<=m;++i)
	{
		scanf("%d",&x);
		dsa=0;
		memset(a,0,sizeof(a));
		for(int j=1;j<=x;++j)
		{
			scanf("%d",&y);
			b[++dsa]=y;
			a[y]=1;
		}
		for(int l=b[1];l<=b[dsa];++l)
	     for(int k=1;k<=dsa;++k)
		  if(a[l]!=1&&lian[l][b[k]]!=1)
		   {
				lian[l][b[k]]=1;
				ru[b[k]]++;
		   }
     }
	
	for(int i=1;i<=n;++i)
	 if(ru[i]==0)
	  {
			q.push(i);
			s++;
	  }
	while(!q.empty())
	{
	   temp=s;
	   s=0;
	   geshu++;
	   for(int i=1;i<=temp;++i)
	   {
			u=q.front();
			q.pop();
			for(int j=1;j<=n;++j)
			 if(lian[u][j]==1)
			  {
					ru[j]--;
					if(ru[j]==0)
					 {
							q.push(j);
							s++;
					 }
			  }
	   }
	}
	printf("%d",geshu);
	//system("pause");
}