code: protected void prepareMandArcDetection() {
  		// RECYCLING ccTp is used to model the compressed path
  		ISet nei;
  		for (int i = 0; i < n; i++) {
  			ccTp[i] = -1;
  		}
  		useful.clear();
  		useful.set(0);
  		int k = 1;
  		useful.set(k);
  		ccTp[k] = k;
  		int first = 0;
  		int last = first;
  		fifo[last++] = k;
  		while (first < last) {
  			k = fifo[first++];
  			nei = Tree.getNeighOf(k);
  			for (int s : nei) {
  				if (ccTp[s] == -1) {
  					ccTp[s] = k;
  					map[s][k] = map[k][s] = -1;
  					if (!useful.get(s)) {
  						fifo[last++] = s;
  						useful.set(s);
  					}
  				}
  			}
  		}
  	}
docs: ***********************************************************************************