Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int[][] dka = new int[100][26];
- for (int i = 0; i < 100; i++) {
- Arrays.fill(dka[i], -1);
- }
- boolean[] acceptedD = new boolean[100];
- HashMap<Integer, HashSet<Integer>> setConditionsOfDka = new HashMap<Integer, HashSet<Integer>>();
- HashMap<HashSet<Integer>, Integer> setIntegersOfDka = new HashMap<HashSet<Integer>, Integer>();
- int nD = 0;
- HashSet<Integer> first = new HashSet<Integer>();
- first.add(0);
- setConditionsOfDka.put(nD, first);
- setIntegersOfDka.put(first, nD);
- nD++;
- ArrayList<Integer> queue = new ArrayList<Integer>();
- queue.add(0);
- while (!queue.isEmpty()) {
- int v = queue.remove(0);
- for (int i = 0; i < 26; i++) {
- HashSet<Integer> temp = new HashSet<Integer>();
- HashSet<Integer> start = setConditionsOfDka.get(v);
- for (Integer j : start) {
- if (nka[j][i] == null) {
- continue;
- }
- for (int x : nka[j][i]) {
- temp.add(x);
- }
- }
- if (temp.isEmpty()) {
- continue;
- }
- if (!setConditionsOfDka.containsValue(temp)) {
- setConditionsOfDka.put(nD, temp);
- setIntegersOfDka.put(temp, nD);
- queue.add(nD);
- nD++;
- }
- int vNext = setIntegersOfDka.get(temp);
- dka[v][i] = vNext;
- for (Integer j : temp) {
- if (acceptedN[j]) {
- acceptedD[vNext] = true;
- break;
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment