比赛 20111012 评测结果 AAWAAWWWAA
题目名称 空中楼阁 最终得分 60
用户昵称 Truth.Cirno 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-10-12 21:44:45
显示代码纯文本
#include <cstdio>
using namespace std;

int pos[150001],tim[150001];

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][81]={{0}},map[11][81][81]={{{0}}}/*,rec[81]={0}*/;
	bool used[81][11]={{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);
			ways[i][temp]++;
			ways[i][temp2]++;
			map[i][temp][ways[i][temp]]=temp2;
			map[i][temp2][ways[i][temp2]]=temp;
		}
	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[pos[head]][temp])
			head--;
		else
			used[pos[head]][temp]=true;
		for (i=1;i<=ways[temp][pos[tail]];i++)
		{
			head++;
			pos[head]=map[temp][pos[tail]][i];
			tim[head]=tim[tail]+1;
/*			if (rec[pos[head]]>=T)
				head--;
			else
				rec[pos[head]]++;
*/			if (used[pos[head]][temp])
				head--;
			else
				used[pos[head]][temp]=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);
}