Nodos adyacentes en un grafo dirigido

Un grafo dirigido es como un grafo no dirigido, excepto que cada arista tiene una dirección que va desde un nodo de origen hasta un nodo de destino.

Grafo 1

En este grafo, el nodo 0 es adyacente al nodo 1, pero el nodo 1 no es adyacente al nodo 0. Si el grafo no fuera dirigido, se vería así:

Grafo 2

En un grafo dirigido, invertir una arista crea un grafo diferente:

Grafo 3A

Grafo 3B

La matriz de adyacencia de un grafo no dirigido es simétrica con respecto a su diagonal principal, pero la de un grafo dirigido no tiene por qué serlo. Un 1 en la fila i y la columna j significa que hay una arista que va del nodo i al nodo j.

Adyacencia del grafo 1

El grafo de la imagen puede representarse mediante esta matriz de adyacencia:

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

El nodo 1 no tiene aristas salientes, por lo que su fila contiene solo ceros. Un nodo sin aristas entrantes tendría una columna que contiene solo ceros.

Instrucciones

Dada la matriz de adyacencia de un grafo dirigido y dos índices de nodo válidos, devuelve si el primer nodo es adyacente al segundo. Examina la celda ubicada en la fila del nodo de origen y la columna del nodo de destino; la dirección importa.

Ejemplos

adjacent([[0, 1, 1, 0, 0], [0, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [1, 0, 0, 0, 0]], 0, 1) # => true
adjacent([[0, 1, 1, 0, 0], [0, 0, 0, 0, 0], [0, 1, 0, 0, 0], [0, 0, 1, 0, 1], [1, 0, 0, 0, 0]], 1, 0) # => false

Notas

  • Los grafos pueden tener hasta 25,000 nodos.
  • El límite de tiempo es de 100 milisegundos, así que examina únicamente la celda solicitada.