KEYS AND ROOMS MEDIUM
problema
Há n salas numeradas de 0 a n − 1. Só a sala 0 começa aberta; todas
as outras estão trancadas. Dentro de cada sala i há um molho de chaves rooms[i], e cada chave
k abre a sala k. Você pode entrar em qualquer sala que já tenha aberto, quantas vezes quiser.
Retorne true se for possível visitar todas as salas.
Visto como grafo, achar a chave k na sala u é uma aresta dirigida u → k:
a chave leva de u para k, mas não de volta. O problema é saber se todos os nós são alcançáveis a partir do 0.
rooms = [[1], [2], [3], []] → true
A sala 0 dá a chave da 1, a 1 dá a da 2, a 2 dá a da 3.
rooms = [[1, 2], [3], [1, 4], [], [2], [0]] → false
A sala 5 guarda a chave da 0, mas ninguém guarda a chave da 5. A aresta 5 → 0 existe, só que não ajuda a chegar na 5. É o exemplo animado abaixo.
Restrições: 2 ≤ n ≤ 1000 · 0 ≤ rooms[i].length ≤ 1000 · soma de todas as chaves ≤ 3000 · 0 ≤ rooms[i][j] < n