public static void computeOneleapData(String file) throws IOException {
		readInOneLeapData(file);
		//Collections.sort(nodeSet);
		long t1 = System.currentTimeMillis();
		// 排序后，每个reduce只处理对应节点
		for (Integer current: nodeSet) {
			// if (pick.contains(nodeSet.get(i)))
			if (current % reduceNumber == 0) {
			//if (true) {
				kPlexSize = 0;
				// 当前所求节点
				//int current = nodeSet.get(i);
				// if (pick.contains(current)) {
				stack.clear();
				res.clear();
				candidate.clear();
				not.clear();
				// 构造起始状态，获得备选节点列表和度数列表
				// 此时res为T(+),candidate+res为Tx,candidate为T(-)
				res.add(current);
				// 初始化备选集并按度数排序
				initialSGraph(candidate, not, current);
				
				// "备选集"的概念和kplexold不同，此处备选集包含“两跳”节点，是待分解的原始图
				// 若“原始图”大小>=有意义的kplex大小时才进行计算
				// 若只计算某个节点最大的k-plex时，需再加判断条件
				while ((candidate.size() + 1) >= quasiCliqueSize)// &&
				{
					if (judgeKplex2(res, candidate,critnodes))// 是kplex
					{//如果是kplex,那么res和candidate中较大的那个包含了所有点
						//critnodes里面应该包含所有临界点
						if (duplicate(not,res, candidate,critnodes)) {
							break;
						}
						String r = (candidate.size()>res.size()?candidate:res).toString();
						System.out.println(r.toString().substring(1, r.length()-1));
						// 是clique,输出
						break;
					} else {
						// 将备选集切分成若干小的状态，切分策略，此处为选择备选集的第一个节点
						// 初始化时，备选集按度数排序
						// 1.排序之后，从后面选取几个先算，即从后面取之后存入另一个栈，把栈里的状态算完
						// 之后把剩余的状态再重新分散入栈，并将已经算出来的值一同发往其他计算节点
						// 2.将状态栈中的状态，随机选取一部分，放入另一个栈中计算
						int y = candidate.get(candidate.size() - 1);// 其他节点，存在策略
						// 子图包含y
						ArrayList<Integer> canA = new ArrayList<Integer>();
						ArrayList<Integer> notA = new ArrayList<Integer>();
						// 分割状态，包含节点y，getT2获得y的邻节点与备选集的交集
						// y的两跳数据和当前candidate的交集
						getT2(canA, notA, y, candidate, not);
						// 这段费时,已经在getT2中可以得到保证,不包含y
						// int p=canA.indexOf(y);
						// if(p!=-1)
						// canA.remove(p);
						SubGraph sA = new SubGraph(canA.size());
						sA.setCandidate(canA);
						sA.setNot(notA);
						sA.setRes(res, y);
						stack.add(sA);
						// 子图不包含y，继续分解
						candidate.remove(candidate.size() - 1);
						not.add(y);
					}
				}
				while (!stack.isEmpty()) {
					SubGraph here = stack.pop();
					ArrayList<Integer> res = here.getRes();
					ArrayList<Integer> candidate = here.getCandidate();
					ArrayList<Integer> not = here.getNot();
					// 分解之后的状态依次弹栈并计算
					computeKplex(res, candidate, not);
					levelNumber = 0;
				}

				// }
				// 需要进行loadbalance的节点，将状态分散

			}
		}
		long t2 = System.currentTimeMillis();
		System.out.println("========" + (t2 - t1) / 1000);
	}