public ArrayList<SalsaVertex> topAuthorities(int K, HashSet<Integer> removeList) {
        // TODO: faster top-K implementation
        ArrayList<SalsaVertex> all = new ArrayList<SalsaVertex>(authorities.size());
        all.addAll(authorities.values());
        Collections.sort(all, new Comparator<SalsaVertex>() {
            @Override
            public int compare(SalsaVertex salsaVertex, SalsaVertex salsaVertex1) {
                if (salsaVertex.value < salsaVertex1.value) return 1;
                else return (salsaVertex.value > salsaVertex1.value ? -1 : 0);
            }
        });

        ArrayList<SalsaVertex> result = new ArrayList<SalsaVertex>(K);
        int i = 0;
        while(result.size() < K) {
            if (i < all.size()) {
                SalsaVertex x = all.get(i);
                if (!removeList.contains(x.id))
                    result.add(x);
            } else {
                break;
            }
            i++;
        }
        return result;
    }