// // main.cpp // Q17 // // Created by AkihiroKOBAYASHI on 7/15/15. // Copyright (c) 2015 Akhr5884. All rights reserved. // #include int n, c, v; int s[1600],t[1600],y[1600],m[1600]; int totaltime= -1; int min(int a, int b) { if(a <= b) { return a; } return b; } void search(int start, int money, int time) { int count; if(start == n) { if(totaltime == -1) { totaltime = time; } else { totaltime = min(totaltime, time); } return; } for(count = 0; count < v; count++) { if(s[count] == start && money - y[count] >= 0) { search(t[count], money - y[count], time + m[count]); } } return; } int main(int argc, const char * argv[]) { // insert code here... std::cin >> n >> c >> v; int count; for(count = 0; count < v; count++) { std::cin >> s[count]; } for(count = 0; count < v; count++) { std::cin >> t[count]; } for(count = 0; count < v; count++) { std::cin >> y[count]; } for(count = 0; count < v; count++) { std::cin >> m[count]; } search(1, c, 0); std::cout << totaltime << "\n"; return 0; }