Este no es un problema de flujo.
Solo necesita consumir los bordes y verificar si es válido o no.
Tomemos dos matrices de izquierda y derecha de tamaño igual al número de vértices que representa el grado de vértices.
- ¿Cuál es el código / algo para la multiplicación de matriz dispersa?
- ¿Cuáles son los 10 algoritmos y estructuras de datos imprescindibles para un concurso de programación?
- Cuando trato de entender una técnica como la memorización o lo que sea, me enfrento a muchos dolores y no lo entiendo de inmediato. Necesito intentarlo varias veces. ¿Es normal o debo obtener algoritmos y técnicas con al menos uno o 2 aciertos?
- Cómo representar el algoritmo de hash SHA256 en python
- ¿Cuáles son los diversos métodos para implementar una pila utilizando la (s) lista (s) vinculada (s) y qué método es el mejor?
Comience a asignar bordes como
1-> 1,2-> 2,… .n-> n
1-> 2,2-> 3,… .n-> 1
Hasta el número de bordes dados.
Donde el primero es del conjunto izquierdo y el segundo del conjunto derecho.
Cada vez que asigna un borde, incremente el grado de vértices.
por ejemplo: para el borde 1-> 1, izquierda [1] = izquierda [1] + 1, derecha [1] = derecha [1] +1
Por último, compruebe si el grado de todos los vértices está dentro del rango
d <= izquierda [i] <= D
d <= derecha [i] <= D
Para todos 1 <= i <= n
Si alguno de los vértices está fuera de rango, imprima -1
De lo contrario, imprime los bordes de la misma manera que se nos asignaron.
Como las restricciones no son muy estrictas, esto es suficiente para pasar los casos de prueba.
Feliz codificación 🙂