private List<Path> findShortestPaths(String start, List<Path> listOfPaths,
			Path currentPath) {

		Vertex vStart = getVertex(start);
		vStart.setVisited(true);
		int row = getVertexIndex(start);

		for (int col = 0; col < COLS; col++) {
			Vertex tempVertex = getVertex(col);
			if (graph[row][col] > 0 && !tempVertex.wasVisited()) {
				int tempCost = graph[row][col];

				Path newPath = null;
				if (currentPath != null) {

					List<Vertex> list = new java.util.ArrayList<>();
					list.addAll(currentPath.getDestinations());
					list.add(tempVertex);
					newPath = new Path(currentPath.getStartNode(), list,
							currentPath.getCost() + tempCost);
					shortestPathQueueInsert(newPath);
				} else {
					newPath = new Path(vStart, tempVertex, tempCost);
					pQueue.add(newPath);
				}
			}
		}

		if (pQueue.isEmpty())
			return listOfPaths;

		Path newPath = pQueue.remove();
		listOfPaths.add(newPath);

		return findShortestPaths(newPath.getEndNode().getLabel(), listOfPaths,
				newPath);

	}