public static void filterCandidate(ArrayList<Integer> res,
			ArrayList<Integer> candidate,ArrayList<Integer>not) {// ,HashMap<Integer,Integer>
											// degree
		if (res.size() >= k_plex)// 否则即便是全部不连接也没关系，起不到过滤效果
		{
			ArrayList<Integer> critSet = new ArrayList<Integer>();
			getCriticalSet(res, critSet);
			ArrayList<Integer> intersection = new ArrayList<Integer>();
			if (critSet.size() > 0)// 节点临界，用于过滤
			{
				intersection.addAll(oneLeap.get(critSet.get(0)));// 先加入第一个元素
				for (int i = 1; i < critSet.size(); i++) {
					HashSet<Integer> adj = oneLeap.get(critSet.get(i));
					intersection.retainAll(adj);// 不断取交集
				}
				// 取intersection和candidate的交集，剔除两跳外数据，自然也将res中数据剔除了
				// res中数据不在candidate中
				candidate.retainAll(intersection);// 只有这些节点可以保留
				not.retainAll(intersection);
			}
		}
		filterAgain(candidate, res);
		filterAgain(not,res);
	}