记录编号 |
28794 |
评测结果 |
AAAAAAAAAA |
题目名称 |
空中楼阁 |
最终得分 |
100 |
用户昵称 |
Truth.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);
}