记录编号 49249 评测结果 AAAAA
题目名称 最难的任务 最终得分 100
用户昵称 GravatarTruth.Cirno 是否通过 通过
代码语言 C++ 运行时间 0.225 s
提交时间 2012-11-07 15:37:09 内存使用 0.52 MiB
显示代码纯文本
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <memory.h>
  5. #include <queue>
  6. using namespace std;
  7.  
  8. int waynum[210],wayto[210][210],waycost[210][210],mincost[210];
  9. bool inque[210];
  10. queue<int> que;
  11.  
  12. int main(void)
  13. {
  14. freopen("hardest.in","r",stdin);
  15. freopen("hardest.out","w",stdout);
  16. int times,i,T,n,m,a,b,c;
  17. cin>>T;
  18. for (times=1;times<=T;times++)
  19. {
  20. memset(waynum,0,sizeof(waynum));
  21. memset(wayto,0,sizeof(wayto));
  22. memset(waycost,0,sizeof(waycost));
  23. cin>>n>>m;
  24. for (i=1;i<=n;i++)
  25. mincost[i]=1000000000;
  26. for (i=1;i<=m;i++)
  27. {
  28. cin>>a>>b>>c;
  29. wayto[a][waynum[a]]=b;
  30. wayto[b][waynum[b]]=a;
  31. waycost[a][waynum[a]]=c;
  32. waycost[b][waynum[b]]=c;
  33. waynum[a]++;
  34. waynum[b]++;
  35. }
  36. mincost[1]=0;
  37. que.push(1);
  38. inque[1]=true;
  39. while (!que.empty())
  40. {
  41. a=que.front();
  42. for (i=0;i<waynum[a];i++)
  43. {
  44. b=wayto[a][i];
  45. c=waycost[a][i];
  46. if (mincost[b]>mincost[a]+c)
  47. {
  48. mincost[b]=mincost[a]+c;
  49. if (!inque[b])
  50. {
  51. que.push(b);
  52. inque[b]=true;
  53. }
  54. }
  55. }
  56. que.pop();
  57. inque[a]=false;
  58. }
  59. if (mincost[n]!=1000000000)
  60. cout<<mincost[n]<<endl;
  61. else
  62. cout<<"-1\n";
  63. }
  64. return(0);
  65. }