比赛 平凡的题目 评测结果 TEEET
题目名称 平凡的皮卡丘 最终得分 0
用户昵称 Tear smile 运行时间 2.605 s
代码语言 C++ 内存使用 76.63 MiB
提交时间 2015-11-03 11:56:09
显示代码纯文本
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<cstdio>
  4. #include<vector>
  5. using namespace std;
  6. int INF=0x3f3f3f3f;
  7. bool at[10000][10000];
  8. struct point
  9. {
  10. int nt;
  11. int ntat;
  12. }t;
  13. vector<point>p[10000];
  14.  
  15. void dfs(int k,int x,int sum)
  16. {
  17. int i,nt,ntat;
  18. if(x==1 && k!=0)
  19. {
  20. if(INF>sum)INF=sum;
  21. return;
  22. }
  23. for(i=0;i<p[x].size();i++)
  24. {
  25. nt=p[x][i].nt;
  26. ntat=p[x][i].ntat;
  27. if(!at[x][nt] && !at[nt][x])
  28. {
  29. at[x][nt]=1;
  30. at[nt][x]=1;
  31. dfs(x,nt,sum+ntat);
  32. at[x][nt]=0;
  33. at[nt][x]=0;
  34. }
  35. }
  36. }
  37. int main()
  38. {
  39. freopen("both.in","r",stdin);
  40. freopen("both.out","w",stdout);
  41. int n,m;
  42. int x,y,tmp,tmp2,i;
  43. scanf("%d %d",&n,&m);
  44. for(i=1;i<=m;i++)
  45. {
  46. scanf("%d%d%d%d",&x,&y,&tmp,&tmp2);
  47. t.nt=y;
  48. t.ntat=tmp;
  49. p[x].push_back(t);
  50. t.nt=x;
  51. t.ntat=tmp2;
  52. p[y].push_back(t);
  53. }
  54. dfs(0,1,0);
  55. if(INF==0x3f3f3f3f)
  56. {
  57. printf("-1");
  58. return 0;
  59. }
  60. printf("%d",INF);
  61. return 0;
  62. }