public void runAlgTime()
	{
		int numN = numNodes;
		VertexPulse vi;
		int di;
		int ti;
		int lowIterator = 0;
		boolean empty;
		while (Snum < numN) {
			while (lowIterator < Delta) {
				
				vi = lowLevelBuckets[lowIterator].getEntrance();
				di = vi.getMaxDist();
				ti = vi.getMinTime();
				empty = deleteToLabel(lowIterator);
				Snum++;

				EdgePulse e = vi.getReversedEdges();
				int tj;
				VertexPulse vj;
				while (e != null) {
					
					vj = e.getTarget();
					tj = vj.getMinTime();
					if (tj > ti + e.getWeightTime()) {
						int ntj = ti + e.getWeightTime();
						// dMap.put(vj.getID(), ndj);
						vj.setMinTime(ntj);
						vj.setMaxDist(di + e.getWeightDist());
						if (ntj < dK) {
							if (vj.isInsertedTime()) {
								moveToLow(tj, ntj, vj);
							} else {
								vj.setInsertedTime();
								insertLow(ntj, vj);
							}
						} else {
							if (vj.isInsertedTime()) {
								moveBucketToBucket(tj, ntj, vj);
							} else {
								vj.setInsertedTime();
								firstInsertion(ntj, vj);
							}
						}
					}
					e = e.getNext();
				}
				if(empty){
					lowIterator = moveInLow(lowIterator);
				}
			}
			stepForwardInTime();
			lowIterator = whereToStart();
		}
	}