记录编号 167210 评测结果 AAAAAAAAAAAAA
题目名称 [USACO Jan08] 架设电话线 最终得分 100
用户昵称 Gravatarforever 是否通过 通过
代码语言 C++ 运行时间 0.078 s
提交时间 2015-06-22 16:04:53 内存使用 8.22 MiB
显示代码纯文本
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<queue>
  4. #include<cstring>
  5. #include<cstdio>
  6. using namespace std;
  7. int n,p,k,a,bb,c;
  8. int dis[1003][1002];
  9. int head[1002],b[1003][1003];
  10. int Max(int h,int hh)
  11. {
  12. if(h>hh) return h;
  13. else
  14. return hh;
  15. }
  16. struct dd
  17. {
  18. int zhong;
  19. int next;
  20. int juli;
  21. }jie[20003];
  22. void spfa(int y)
  23. {
  24. for(int i=1;i<=n;++i)
  25. for(int j=0;j<=k;++j)
  26. dis[i][j]=9999999;
  27. queue<pair<int,int> >que;
  28. dis[y][0]=0;
  29. b[y][0]=1;
  30. que.push(make_pair(y,0));
  31. while(!que.empty())
  32. {
  33. pair<int,int>u=que.front();
  34. que.pop();
  35. int yu=u.first;
  36. int lin=u.second;
  37. b[yu][lin]=0;
  38. for(int i=head[yu];i!=-1;i=jie[i].next)
  39. {
  40. int sd=jie[i].zhong;
  41. if(dis[sd][lin]>Max(dis[yu][lin],jie[i].juli))
  42. {
  43. dis[sd][lin]=Max(dis[yu][lin],jie[i].juli);
  44. if(!b[sd][lin])
  45. {
  46. b[sd][lin]=1;
  47. que.push(make_pair(sd,lin));
  48. }
  49. }
  50. if(lin+1<=k)
  51. {
  52. if(dis[sd][lin+1]>dis[yu][lin])
  53. {
  54. dis[sd][lin+1]=dis[yu][lin];
  55. if(!b[sd][lin+1])
  56. {
  57. b[sd][lin+1]=1;
  58. que.push(make_pair(sd,lin+1));
  59. }
  60. }
  61. }
  62. }
  63. }
  64. }
  65. int main()
  66. { freopen("phoneline.in","r",stdin);
  67. freopen("phoneline.out","w",stdout);
  68. memset(head,-1,sizeof(head));
  69. scanf("%d%d%d",&n,&p,&k);
  70. for(int i=1;i<=p*2;++i)
  71. {
  72. scanf("%d%d%d",&a,&bb,&c);
  73. jie[i].zhong=bb;
  74. jie[i].juli=c;
  75. jie[i].next=head[a];
  76. head[a]=i;
  77. i++;
  78. jie[i].zhong=a;
  79. jie[i].juli=c;
  80. jie[i].next=head[bb];
  81. head[bb]=i;
  82. }
  83. spfa(1);
  84. if(dis[n][k]<999999)
  85. printf("%d",dis[n][k]);
  86. else
  87. printf("%d",-1);
  88. //system("pause");
  89. }