Este problema se trata simplemente de encontrar el diámetro en un árbol.
Como se menciona que hay exactamente un camino entre dos libres
bloques Por lo tanto, hay una estructura de árbol subyacente en la cuadrícula, cuyo
diámetro que necesitamos encontrar.
Por lo tanto, el procedimiento estándar para encontrar el diámetro de un árbol es
1. Elija cualquier bloque libre arbitrario (nodo de lectura).
2. Encuentre el nodo a la mayor distancia del nodo seleccionado.
(Esto se puede hacer en una llamada de BFS / DFS, es decir, en O (V))
3. Ahora con el nuevo nodo como nodo inicial, encuentre la longitud del más largo
ruta a partir de ella que nuevamente se puede hacer en una llamada de BFS / DFS iein O (V)
Por lo tanto, la complejidad general es dos llamadas de O (V), lo que lo convierte en O (V).
Dado que para el problema anterior R, C <= 1000, tenemos Vmax = 10 ^ 6.
Por lo tanto, el problema se puede resolver fácilmente utilizando el enfoque mencionado anteriormente.
Cómo resolver este problema SPOJ
Related Content
¿Cuál es el algoritmo utilizado por el IRCTC para reservar en línea?
¿Cuánto de los algoritmos de Windows 8 y 10 se toman de versiones anteriores de Windows?
¿Qué es una estructura de datos dinámicos de pila?
Cómo aprender algoritmos de manera fácil
Cómo hacer un programa que imprima potencias de 2 hasta n en C ++
More Interesting
¿Escribir un algoritmo simple para verificar si el número dado es primo o no?
¿Cuál es el mejor algoritmo de clasificación para alfabetizar físicamente mi colección de libros?
¿Qué algoritmo usar para encontrar una ganancia l1 óptima?
¿Cómo puedo usar el algoritmo de Baum-Welch para agregar observaciones perdidas?
¿Qué prueba de primalidad se usa en las aplicaciones de software convencionales?
¿Recomendaría usar HackerRank para mejorar las habilidades del algoritmo? ¿Por qué?
¿Es posible crear un algoritmo de proximidad a la muerte?
¿Cuál es la compensación tiempo-espacio en el diseño de algoritmos?