2
public List<String> watchedVideosByFriends(3
List<List<String>> watchedVideos, int[][] friends, int id, int level) {4
int n = friends.length;5
boolean[] visited = new boolean[n];6
List<List<Integer>> graph = new ArrayList<>();7
for (int i = 0; i < n; i++) graph.add(new ArrayList<>());8
for (int i = 0; i < n; i++) {9
for (int j = 0; j < friends[i].length; j++) {10
graph.get(i).add(friends[i][j]);13
// System.out.println(graph.get(0));14
Queue<Integer> queue = new ArrayDeque<>();17
Map<String, Integer> answer = new HashMap<>();18
while (!queue.isEmpty() && level > 0) {19
int size = queue.size();20
for (int i = 0; i < size; i++) {21
int vertex = queue.remove();22
for (int child : graph.get(vertex)) {23
if (!visited[child]) {24
// if(level == 1) System.out.println(watchedVideos.get(child));26
for (String a : watchedVideos.get(child)) {27
answer.put(a, answer.getOrDefault(a, 0) + 1);30
visited[child] = true;37
Queue<String[]> sortedQueue =40
if (a[1].equals(b[1])) return a[0].compareTo(b[0]);41
return Integer.parseInt(a[1]) - Integer.parseInt(b[1]);43
for (String key : answer.keySet()) {44
sortedQueue.offer(new String[] {key, Integer.toString(answer.get(key))});46
List<String> finalAnswer = new ArrayList<>();47
while (!sortedQueue.isEmpty()) finalAnswer.add(sortedQueue.remove()[0]);