public static Hashtable<Node, Integer> getLargestConnectedSubgraph(GraphEltSet ges) {
		int nodeCount = ges.nodeCount();
		if (nodeCount == 0)
			return null;

		Vector<Hashtable<Node, Integer>> subgraphVector = new Vector<Hashtable<Node, Integer>>();
		for (int i = 0; i < nodeCount; i++) {
			Node n = ges.nodeAt(i);
			boolean skipNode = false;
			for (int j = 0; j < subgraphVector.size(); j++) {
				if (subgraphVector.elementAt(j).contains(n)) {
					skipNode = true;
				}
			}

			Hashtable<Node, Integer> subgraph = calculateDistances(ges, n, 1000);
			if (subgraph.size() > nodeCount / 2)
				return subgraph;
			if (!skipNode)
				subgraphVector.addElement(subgraph);

		}

		int maxSize = 0;
		int maxIndex = 0;
		for (int j = 0; j < subgraphVector.size(); j++) {
			if (subgraphVector.elementAt(j).size() > maxSize) {
				maxSize = subgraphVector.elementAt(j).size();
				maxIndex = j;
			}
		}

		return subgraphVector.elementAt(maxIndex);
	}