比赛 20121009 评测结果 AAAAAAAAA
题目名称 最长路 最终得分 100
用户昵称 QhelDIV 运行时间 0.022 s
代码语言 C++ 内存使用 3.30 MiB
提交时间 2012-10-09 20:02:17
显示代码纯文本
  1. #include <fstream>
  2. #include <cstdlib>
  3. using namespace std;
  4. ifstream fin("longest.in");
  5. ofstream fout("longest.out");
  6. int N,M,f[2000];
  7. bool flag[2000];
  8. class Node
  9. {
  10. public:
  11. int Name,leng;
  12. Node *Prev;
  13. }*last[4000];
  14.  
  15. void ADD(int u,int v,int w)
  16. {
  17. Node *temp=new Node;
  18. temp->Name=v;
  19. temp->leng=w;
  20. temp->Prev=last[u];
  21. last[u]=temp;
  22. }
  23.  
  24. void Initialize()
  25. {
  26. int i,U,V,W;
  27. fin>>N>>M;
  28. for(i=1;i<=N;i++)
  29. last[i]=NULL;
  30. for(i=1;i<=M;i++)
  31. {
  32. fin>>U>>V>>W;
  33. ADD(U,V,W);
  34. }
  35. }
  36.  
  37. void dp()
  38. {
  39. int i;
  40. flag[1]=true;
  41. for(i=1;i<N;i++)
  42. if(flag[i])
  43. for(Node *p=last[i];p;p=p->Prev)
  44. {
  45. f[p->Name]=max(f[p->Name],f[i]+p->leng);
  46. flag[p->Name]=true;
  47. }
  48. if(flag[N]==true)
  49. fout<<f[N]<<endl;
  50. else
  51. fout<<-1<<endl;
  52. }
  53.  
  54. int main()
  55. {
  56. Initialize();
  57. dp();
  58. fin.close();
  59. fout.close();
  60. return 0;
  61. }