private static HashMap<Integer, Integer> filterUnCrit(
			HashMap<Integer, Integer> curCand, HashSet<Integer> intersection) {
		HashMap<Integer, Integer> re = new HashMap<Integer, Integer>();
		if (curCand.size() < intersection.size()) {
			for (Entry<Integer, Integer> en : curCand.entrySet()) {
				if (intersection.contains(en.getKey()))
					re.put(en.getKey(), en.getValue());
			}
		} else {
			for (Integer i : intersection) {
				Integer v = curCand.get(i);
				if (v != null) {
					re.put(i, v);
				}
			}
		}

		return re;
	}