示例#1
0
文件: Main.java 项目: maemual/ACMcode
 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(")");
   }
 }
示例#2
0
文件: Main.java 项目: hmaec21/AOJ
  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);
  }
示例#3
0
文件: T1362.java 项目: kailIII/ACM-3
  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");
      }
    }
  }
示例#6
0
文件: Main.java 项目: maemual/ACMcode
 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();
   }
 }
示例#7
0
文件: Main.java 项目: hmaec21/AOJ
  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);
   }
 }
示例#10
0
 static void solve() {
   dfs();
   System.out.println(res);
 }