fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define endl '\n'
  4. #define INF 1e9
  5. int n,dp[10005][105];
  6. int solve(int rem,int i,vector< vector< pair< int,pair<int,int> > > > &v)
  7. {
  8. if(i==(n-1))
  9. {
  10. return 0;
  11. }
  12. if(dp[rem][i] !=-1)
  13. return dp[rem][i];
  14. int ans=INF;
  15. for(int j=0;j<v[i].size();j++)
  16. {
  17. if(rem>=v[i][j].second.first)
  18. ans = min(ans,solve(rem-v[i][j].second.second,v[i][j].first,v)+v[i][j].second.first);
  19. }
  20. dp[rem][i]=ans;
  21. return ans;
  22. }
  23. int main()
  24. {
  25. ios_base::sync_with_stdio(false);
  26. cin.tie(NULL);
  27. int t;
  28. cin>>t;
  29. while(t--)
  30. {
  31. memset(dp,-1,sizeof(dp));
  32. int k,r;
  33. cin>>k>>n>>r;
  34. vector< vector< pair< int,pair<int,int> > > >v(n);
  35. while(r--)
  36. {
  37. int s,d,l,tol;
  38. cin>>s>>d>>l>>tol;
  39. s--;
  40. d--;
  41. v[s].push_back(make_pair(d,make_pair(l,tol)));
  42. }
  43. int res=solve(k,0,v);
  44. if(res==INF)
  45. cout<<-1<<endl;
  46. else
  47. cout<<res<<endl;
  48. }
  49. return 0;
  50. }
  51.  
Success #stdin #stdout 0s 7324KB
stdin
2
5
6
7
1 2 2 3
2 4 3 3
3 4 2 4
1 3 4 1
4 6 2 1
3 5 2 0
5 4 3 2
0
4
4
1 4 5 2
1 2 1 0
2 3 1 1
3 4 1 0
stdout
11
-1