Dado un gráfico de N vértices con m1 bordes unidireccionales y m2 bordes bidireccionales, ¿cómo podemos dirigir los bordes bidireccionales de modo que no tengamos ninguna caminata cerrada?

Si algunos de los bordes unidireccionales ya forman un ciclo, es imposible. Para verificar, solo realice una búsqueda de profundidad primero usando bordes unidireccionales: si hay bordes hacia atrás, hay un ciclo, de lo contrario no hay ciclos.

Si los bordes unidireccionales actuales no forman ningún ciclo, siempre es posible. Cree un gráfico solo de bordes unidireccionales: será un gráfico dirigido acíclico. Construya un orden topológico en los nodos entonces. Luego, dirija cada borde bidireccional de tal manera que conduzca desde el nodo anterior al nodo posterior en términos de orden topológico. No aparecerán nuevos ciclos, porque todos los bordes ahora conducen de nodos anteriores a nodos posteriores en el orden, por lo que no hay forma de regresar antes y formar un ciclo. El único caso de esquina aquí es si algunos de los bordes bidireccionales son bucles (van de un nodo a sí mismos), entonces es imposible dirigirlos para evitar ciclos.

No estoy convencido de que siempre sea posible. Por ejemplo, si N = 3 y m1 = 0, entonces invertir uno de cada bordes de dos vías da un ciclo. Invertir uno o dos todavía da un ciclo alrededor de los tres vértices.