记录编号 28826 评测结果 AAAAAAAAAA
题目名称 空中楼阁 最终得分 100
用户昵称 Gravatar苏轼 是否通过 通过
代码语言 C++ 运行时间 0.077 s
提交时间 2011-10-17 19:49:59 内存使用 0.29 MiB
显示代码纯文本
  1. #include <cstdio>
  2. #include <cstring>
  3. #include <queue>
  4.  
  5. using namespace std;
  6.  
  7. bool map[11][81][81], boo[81];
  8. unsigned dist[81];
  9.  
  10. int main ()
  11. {
  12. freopen("house.in", "r", stdin);
  13. freopen("house.out", "w", stdout);
  14.  
  15. int n, m, t;
  16. scanf("%d%d%d", &n, &m, &t);
  17. memset(dist, 0xFF, (n+1)*sizeof(unsigned));
  18. for (int i=1; i<=t; i++)
  19. for (int j=0; j<m; j++)
  20. {
  21. int a, b;
  22. scanf("%d%d", &a, &b);
  23. map[i%t][a][b] = map[i%t][b][a] = true;
  24. }
  25.  
  26. queue<int> q;
  27. dist[1] = 1;
  28. boo[1] = true;
  29. q.push(1);
  30. while (q.size())
  31. {
  32. int curr = q.front();
  33. boo[curr] = false;
  34. q.pop();
  35.  
  36. int type = dist[curr] % t;
  37. for (int i=0; i<=n; i++)
  38. if (i != curr)
  39. for (int j=type; j<type+t; j++)
  40. if (map[j%t][curr][i] &&
  41. dist[curr]+j-type+1 < dist[i])
  42. {
  43. dist[i] = dist[curr] + j - type + 1;
  44. if (!boo[i])
  45. {
  46. boo[i] = true;
  47. q.push(i);
  48. }
  49. }
  50. }
  51.  
  52. if (dist[0] < 0xFFFFFFFF)
  53. printf("%u\n", dist[0]-1);
  54. else
  55. printf("Poor Z4!\n");
  56.  
  57. return 0;
  58. }
  59.  
  60.