import java.util.PriorityQueue; import java.util.Queue; import java.util.Scanner; public class Main { private final static Main main = new Main(); public static void main(String[] args) { long l = System.currentTimeMillis(); main.answer(); //System.out.println("処理時間:" + (System.currentTimeMillis() - l)); } private void answer() { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int c = sc.nextInt(); int v = sc.nextInt(); sc.nextLine(); String[] s = sc.nextLine().split(" "); String[] t = sc.nextLine().split(" "); String[] y = sc.nextLine().split(" "); String[] m = sc.nextLine().split(" "); sc.close(); Data[][] map = new Data[n][n]; for(int i=0; i queue = new PriorityQueue(); queue.add(list[0]); while(!queue.isEmpty()) { Data d = queue.poll(); int from = d.id; for(int to=0; to map[from][to].time + list[from].time && c >= map[from][to].cost + list[from].cost) { list[to].time = map[from][to].time + list[from].time; list[to].cost = map[from][to].cost + list[from].cost; queue.add(list[to]); } } } return list[g].time == INF ? -1 : list[g].time; } } private class Data implements Comparable { private int id; private int cost; private int time; private Data(int id, int cost, int time) { this.id = id; this.cost = cost; this.time = time; } @Override public int compareTo(Data o) { return time - o.time; } } }