private static boolean tryKuhn(Graph input, int v) {
		if (used[v])
			return false;
		used[v] = true;

		for (int i = 0; i < input.getVertexCount(); i++) {
			if (input.arr_adj[v][i] == 0)
				continue;
			int to = i;
			if (mt[to] == -1 || tryKuhn(input, mt[to])) {
				mt[to] = v;
				return true;
			}
		}
		return false;
	}