public static int[] getPower(Map<Integer,ZState> states){
        
        //TODO подумати чи потрібно повертати масив, чи можна обітися тільки степенем
        int power = 0;
        List<Integer> indexs = new ArrayList<>();
        int [][][] table = initTransitionTable(states);
        
        for (int i = 0; i < table.length; i++) {
            int curr_power = 0;
            for (int j = 0; j < table[i].length; j++) {
                if(table[i][j] != null){
                    if(i != j){
                        curr_power++;
                    }
                }else if(table[j][i] != null){
                    curr_power++;
                }            
            }
            
            if(curr_power > power){
                indexs.clear();
                indexs.add(i);
                power = curr_power;
            }else if(curr_power == power){
                indexs.add(i);
            }
            
        }
        int [] result = new int [indexs.size()+1];
        result[0] = power;
        for (int i = 0; i < indexs.size(); i++) {
            result[i+1] = indexs.get(i);
        }
        
        //перевірка на кількість вершин
        int new_result = (int) Math.round(Math.ceil(Math.log(states.size())/Math.log(2)));
        if(new_result > result[0]){
            result = new int[1];
            result[0] = new_result;
        }
        
        return result;
    }