比赛 |
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);
}