private void dfs(final int x, final int sent, final int back, final int[] path, final int pos) {
		path[pos] = x;
		Node v = nodes[x];
		int sentToNext = 0;
		int backToNext = 0;
		if(back + v.capacity < perfect) {
			backToNext = 0;
			sentToNext = sent + (perfect - (back + v.capacity));
		} else if(back + v.capacity >= perfect) {
			backToNext = (back + v.capacity - perfect);
			sentToNext = sent;
		}
		
		if(x == t) {
			if(sentToNext < this.sent || (sentToNext == this.sent && backToNext < this.back)) {
				this.sent = sentToNext;
				this.back = backToNext;
				this.path = Arrays.copyOf(path, pos + 1);
			}
		}
		
		
		int[] children = pc[x];
		for(int i = 0; i < children.length; i++) {
			if(children[i] > 0) {
				dfs(i, sentToNext, backToNext, path, pos + 1);
			}
		}
	}