GRID//RUNNER

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.

Exemplo 1 · 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.

Exemplo 2 · 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