Guest User

Untitled

a guest
Dec 10th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.33 KB | None | 0 0
  1. int[][] dka = new int[100][26];
  2.         for (int i = 0; i < 100; i++) {
  3.             Arrays.fill(dka[i], -1);
  4.         }
  5.         boolean[] acceptedD = new boolean[100];
  6.         HashMap<Integer, HashSet<Integer>> setConditionsOfDka = new HashMap<Integer, HashSet<Integer>>();
  7.         HashMap<HashSet<Integer>, Integer> setIntegersOfDka = new HashMap<HashSet<Integer>, Integer>();
  8.         int nD = 0;
  9.         HashSet<Integer> first = new HashSet<Integer>();
  10.         first.add(0);
  11.         setConditionsOfDka.put(nD, first);
  12.         setIntegersOfDka.put(first, nD);
  13.         nD++;
  14.         ArrayList<Integer> queue = new ArrayList<Integer>();
  15.         queue.add(0);
  16.         while (!queue.isEmpty()) {
  17.             int v = queue.remove(0);
  18.             for (int i = 0; i < 26; i++) {
  19.                 HashSet<Integer> temp = new HashSet<Integer>();
  20.                 HashSet<Integer> start = setConditionsOfDka.get(v);
  21.                 for (Integer j : start) {
  22.                     if (nka[j][i] == null) {
  23.                         continue;
  24.                     }
  25.                     for (int x : nka[j][i]) {
  26.                         temp.add(x);
  27.                     }
  28.                 }
  29.                 if (temp.isEmpty()) {
  30.                     continue;
  31.                 }
  32.                 if (!setConditionsOfDka.containsValue(temp)) {
  33.                     setConditionsOfDka.put(nD, temp);
  34.                     setIntegersOfDka.put(temp, nD);
  35.                     queue.add(nD);
  36.                     nD++;
  37.                 }
  38.  
  39.                 int vNext = setIntegersOfDka.get(temp);
  40.                 dka[v][i] = vNext;
  41.                 for (Integer j : temp) {
  42.                     if (acceptedN[j]) {
  43.                         acceptedD[vNext] = true;
  44.                         break;
  45.                     }
  46.                 }
  47.             }
  48.         }
Add Comment
Please, Sign In to add comment