记录编号 28794 评测结果 AAAAAAAAAA
题目名称 空中楼阁 最终得分 100
用户昵称 GravatarTruth.Cirno 是否通过 通过
代码语言 C++ 运行时间 0.050 s
提交时间 2011-10-17 14:16:35 内存使用 0.38 MiB
显示代码纯文本
#include <cstdio>
using namespace std;

int pos[1001],tim[1001];
bool map[11][101][101]={{{false}}};

int main(void)
{
	freopen("house.in","r",stdin);
	freopen("house.out","w",stdout);
	int i,j,n,m,T,temp,temp2,head=0,tail=0/*ways[11][101]={{0}},rec[81]={0}*/;
	bool used[11][101]={{false}};
	scanf("%d %d %d",&n,&m,&T);
	for (i=1;i<=T;i++)
		for (j=1;j<=m;j++)
		{
			scanf("%d %d",&temp,&temp2);
			map[i][temp][temp2]=true;
			map[i][temp2][temp]=true;
		}
	for (i=1;i<=T;i++)
		for (j=0;j<=n;j++)
			map[i][j][j]=true;
	pos[0]=1;
	tim[0]=1;
/*	rec[1]=1;*/
	used[1][1]=true;
	tail=0;
	head=0;
	while (tail<=head)
	{
		temp=tim[tail]%T;
		if (temp==0)
			temp=T;
/*		head++;
		pos[head]=pos[tail];
		tim[head]=tim[tail]+1;
//		if (rec[pos[head]]>=T)
//			head--;
//		else
//		if (used[temp+1][pos[head]])
			head--;
		else
			used[temp+1][pos[head]]=true;
*/		for (i=0;i<=n;i++)
		{
			if (!map[temp][pos[tail]][i])
				continue;
			head++;
			pos[head]=i;
			tim[head]=tim[tail]+1;
/*			if (rec[pos[head]]>=T)
				head--;
			else
				rec[pos[head]]++;
*/			if (used[temp+1][pos[head]])
				head--;
			else
				used[temp+1][pos[head]]=true;
			if (pos[head]==0)
			{
				printf("%d\n",tim[tail]);
				fclose(stdin);
				fclose(stdout);
				return(0);
			}
		}
		tail++;
	}
	printf("Poor Z4!\n");
	fclose(stdin);
	fclose(stdout);
	return(0);
}