private boolean edgeAndScheduleSelection(EvolvingGraph graph, Vector<Integer> tLBD){
		Vector<Integer> arrivalTime = new Vector<Integer>();
		boolean improved = false;
		
		eMin = new Vector<Edge>(graph.getNumOfNodes());
		tMin = new Vector<Integer>(graph.getNumOfNodes());
		
		for (int i = 0; i < graph.getNumOfNodes(); i++){
			eMin.add(i, null);
			tMin.add(i, Integer.MAX_VALUE);
			arrivalTime.add(i, tLBD.get(i));
		}
		for (Node node : graph.getNodes()){
			if (tLBD.get(node.getId()) != Integer.MAX_VALUE){
				for (Edge edge : node.getAdj()){
					Integer newTime = edge.getNextDeparture(tLBD.get(node.getId()));
					if (newTime != null) {
						Node v = edge.getV();
						if (newTime + edge.getCost() < arrivalTime.get(v.getId())){
							eMin.set(v.getId(), edge);
							tMin.set(v.getId(), newTime);
							arrivalTime.set(v.getId(), newTime + edge.getCost());
							improved = true;
						}
					}
				}
			}
		}
		return improved;
	}