Encontrando nós adjacentes

Um grafo é um conjunto de nós e arestas que conectam esses nós.

Exemplo de grafo

Há dois tipos de grafos: direcionados e não direcionados. Em um grafo não direcionado, as arestas entre os nós não têm uma direção específica (como uma rua de mão dupla), enquanto, em um grafo direcionado, cada aresta tem uma direção associada (como uma rua de mão única).

Para que dois nós de um grafo sejam considerados adjacentes, deve haver uma aresta entre eles. No exemplo acima, os nós 0 e 1 são adjacentes, mas os nós 0 e 2 não são.

Podemos representar grafos usando uma matriz de adjacência. A matriz de adjacência de um grafo com "n" nós é uma matriz "n * n", em que o valor na linha "i" e na coluna "j" é 0 se os nós "i" e "j" não forem adjacentes, e 1 se os nós "i" e "j" forem adjacentes.

Para o exemplo acima, a matriz de adjacência seria a seguinte:

[
  [ 0, 1, 0, 0 ],
  [ 1, 0, 1, 1 ],
  [ 0, 1, 0, 1 ],
  [ 0, 1, 1, 0 ]
]

Um indica que existe uma conexão e zero indica que não existe. Em termos booleanos, correspondem a true e false, respectivamente.

Veja como o modelo acima pode ser descrito:

  • Na primeira linha, o nó 0 não se conecta a si mesmo, mas se conecta ao nó 1. Ele não se conecta ao nó 2 nem ao nó 3. A linha é escrita como 0, 1, 0, 0.
  • Na segunda linha, o nó 1 se conecta aos nós 0, 2 e 3, mas não se conecta a si mesmo. A linha é escrita como 1, 0, 1, 1.
  • Na terceira linha, o nó 2 não se conecta ao nó 0, mas se conecta ao nó 1; não se conecta a si mesmo e se conecta ao nó 3. A linha é escrita como 0, 1, 0, 1
  • Na quarta linha, o nó 3 não se conecta ao nó 0, mas se conecta aos nós 1 e 2. Ele não se conecta a si mesmo. A linha é escrita como 0, 1, 1, 0.

Sua tarefa é determinar se dois nós são adjacentes em um grafo não direcionado a partir da matriz de adjacência e dos dois nós.

Exemplos

Exemplo de grafo

Matriz de adjacência:

[
  [ 0, 1, 0, 0 ],
  [ 1, 0, 1, 1 ],
  [ 0, 1, 0, 1 ],
  [ 0, 1, 1, 0 ]
]
  • Para os nós 0,1, deve-se retornar true.
  • Para os nós 0,2, deve-se retornar false.

Exemplo de grafo 2

[
  [ 0, 1, 0, 1, 1 ],
  [ 1, 0, 1, 0, 0 ],
  [ 0, 1, 0, 1, 0 ],
  [ 1, 0, 1, 0, 1 ],
  [ 1, 0, 0, 1, 0 ]
]
  • Para os nós 0,3, deve-se retornar true.
  • Para os nós 1,4, deve-se retornar false.

Observações

  • Os grafos podem ter entre 0 e 25,000 nós.
  • Limite de tempo: 100 milissegundos.