比赛 20120720 评测结果 AAWWAWWWWW
题目名称 阻击补给线 最终得分 30
用户昵称 Truth.Cirno 运行时间 0.228 s
代码语言 C++ 内存使用 1.72 MiB
提交时间 2012-07-20 08:44:43
显示代码纯文本
  1. #include <cstdio>
  2. using namespace std;
  3.  
  4. const int MAXINT=1000000000;
  5. int ava=0,ptow[501],way[124751],wayright[124751],waynext[124751];
  6.  
  7. void addway(int x,int y,int right)
  8. {
  9. int pos;
  10. pos=ptow[x];
  11. if (pos==-1)
  12. {
  13. ptow[x]=ava;
  14. way[ava]=y;
  15. waynext[ava]=-1;
  16. wayright[ava++]=right;
  17. }
  18. else
  19. {
  20. while (waynext[pos]!=-1)
  21. pos=waynext[pos];
  22. way[ava]=y;
  23. waynext[pos]=ava;
  24. waynext[ava]=-1;
  25. wayright[ava++]=right;
  26. }
  27. }
  28.  
  29. int cal(int pos)
  30. {
  31. int right=0;
  32. pos=ptow[pos];
  33. while (pos!=-1)
  34. {
  35. right+=wayright[pos];
  36. pos=waynext[pos];
  37. }
  38. return(right);
  39. }
  40.  
  41. int main(void)
  42. {
  43. freopen("t2bb.in","r",stdin);
  44. freopen("t2bb.out","w",stdout);
  45. int i,n,m,x,y,right,temp,minright=MAXINT;
  46. scanf("%d%d",&n,&m);
  47. for (i=0;i<n;i++)
  48. ptow[i]=-1;
  49. for (i=0;i<m;i++)
  50. {
  51. scanf("%d%d%d",&x,&y,&right);
  52. addway(x,y,right);
  53. addway(y,x,right);
  54. }
  55. for (i=0;i<n;i++)
  56. {
  57. temp=cal(i);
  58. if (minright>temp)
  59. minright=temp;
  60. }
  61. printf("%d\n",minright);
  62. return(0);
  63. }