static void dfs(int nodes, int th) { if (nodes == 1) { System.out.print("X"); return; } int tmp = th; int i; for (i = 0; i < nodes; i++) { tmp -= inx[i] * inx[nodes - i - 1]; if (tmp <= 0) break; } tmp += inx[i] * inx[nodes - i - 1]; int x, y; x = ((tmp - 1) / inx[nodes - i - 1]) + 1; y = tmp - (x - 1) * inx[nodes - i - 1]; if ((nodes - i - 1 > 0) && (i > 0)) { System.out.print("("); dfs(i, x); System.out.print(")X("); dfs(nodes - i - 1, y); System.out.print(")"); } else if (i > 0) { System.out.print("("); dfs(i, x); System.out.print(")X"); } else { System.out.print("X("); dfs(nodes - i - 1, y); System.out.print(")"); } }
public static void dfs(int sum, int c, int i) { if (c == k) { if (sum == s) { count++; } return; } if (i > n || sum > s) { return; } dfs(sum, c, i + 1); dfs(sum + i, c + 1, i + 1); }
void run() throws Exception { init2(); int n = Integer.parseInt(in.readLine()); A = new Node[n]; for (int i = 0; i < n; ++i) { A[i] = new Node(-1); } E = new Node[2 * n + 3]; col = new boolean[n]; ans = new int[n]; for (int i = 0; i < n; ++i) { String[] res = in.readLine().split(("\\s")); for (int j = 0; j < res.length - 1; ++j) { int u = Integer.parseInt(res[j]) - 1; E[cnt] = new Node(u); E[cnt].next = A[i].next; A[i].next = E[cnt++]; E[cnt] = new Node(i); E[cnt].next = A[u].next; A[u].next = E[cnt++]; } } int r = Integer.parseInt(in.readLine()) - 1; dfs(r); out.println(ans[r]); in.close(); out.close(); }
static void dfs(int i) { v[i] = true; for (int j = 1; j <= n; j++) { if (original[i][j] == flow[i][j] && original[i][j] > 0) { cut[i][j] = true; } else if (!v[j] && original[i][j] > 0 && original[i][j] > flow[i][j] && flow[i][j] > 0) dfs(j); } }
public static void main(String[] args) throws Exception { StreamTokenizer st = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in))); while (st.nextToken() != StreamTokenizer.TT_EOF) { n = (int) st.nval; array = new int[n + 1]; Arrays.fill(array, 1); openList = new ArrayList<Integer>(); closeList = new ArrayList<Integer>(); st.nextToken(); c = (int) st.nval; if (c > 4) { if (c % 2 == 1) { c = 3; } else { c = 4; } } while (true) { st.nextToken(); int num = (int) st.nval; if (num != -1) { openList.add(num); } else { break; } } while (true) { st.nextToken(); int num = (int) st.nval; if (num != -1) { closeList.add(num); } else { break; } } success = false; len1 = openList.size(); len2 = closeList.size(); resultList = new ArrayList<String>(); dfs(0); if (success) { Collections.sort(resultList); int size = resultList.size(); for (int i = 0; i < size; i++) { System.out.println(resultList.get(i)); } } else { System.out.println("IMPOSSIBLE"); } } }
public static void main(String[] args) { Scanner cin = new Scanner(System.in); while (cin.hasNext()) { int x = cin.nextInt(); if (x == 0) break; int i; for (i = 1; ; i++) { x -= inx[i]; if (x <= 0) break; } x += inx[i]; dfs(i, x); System.out.println(); } }
public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (true) { n = sc.nextInt(); k = sc.nextInt(); s = sc.nextInt(); if (n == 0) { break; } count = 0; dfs(0, 0, 1); System.out.println(count); } }
public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] in; while (true) { in = br.readLine().split(" "); n = Integer.parseInt(in[0]); m = Integer.parseInt(in[1]); if (n == 0 && m == 0) break; cap = new long[n + 5][n + 5]; original = new long[n + 5][n + 5]; cut = new boolean[n + 5][n + 5]; flow = new long[n + 5][n + 5]; for (int i = 0; i < m; i++) { in = br.readLine().split(" "); int from = Integer.parseInt(in[0]), to = Integer.parseInt(in[1]), w = Integer.parseInt(in[2]); cap[from][to] = w; original[from][to] = w; cap[to][from] = w; original[to][from] = w; } v = new boolean[n + 5]; maxFlow(); dfs(1); for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { if (cut[i][j]) { System.out.println(i + " " + j); cut[j][i] = false; } } } System.out.println(); } br.close(); }
private static void dfs(int k) { if (k > c) { return; } if (checkStatus()) { if (k == c) { success = true; StringBuffer sb = new StringBuffer(); for (int j = 1; j < n + 1; j++) { sb.append(array[j]); } String result = sb.toString(); if (!resultList.contains(result)) { resultList.add(result); } return; } } for (int i = 0; i < 4; i++) { changeStatus(i); dfs(k + 1); changeStatus(i); } }
static void solve() { dfs(); System.out.println(res); }