Cómo resolver este problema SPOJ

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.

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é estructuras de datos admiten la inserción, eliminación y selección de un elemento aleatorio con un límite de complejidad de tiempo [matemática] O (1) [/ matemática]?

¿Qué algoritmo usar para encontrar una ganancia l1 óptima?

Una computadora pequeña tiene 4 marcos de página. Un proceso hace la siguiente lista de referencias de página; 1,2,3,4,1,5,2,3,1,2. ¿Cuántas fallas de página ocurren usando los siguientes algoritmos de reemplazo de página?

¿Cómo puedo usar el algoritmo de Baum-Welch para agregar observaciones perdidas?

¿Cuáles son los algoritmos para determinar si un punto está dentro de una forma cerrada arbitraria o no?

¿Cuándo sería el algoritmo A más lento que el algoritmo B? Demuestre su respuesta con la ayuda de un ejemplo.

¿Qué prueba de primalidad se usa en las aplicaciones de software convencionales?

Si hago algunos cálculos iterando sobre el bucle mientras tomo las entradas. A partir de entonces, imprimiendo el resultado. ¿Puedo decir que es O (1) complejidad?

Tengo la cadena de entrada, también tengo la cadena encriptada. ¿Cómo averiguo qué algoritmo de cifrado se utilizó?

¿Recomendaría usar HackerRank para mejorar las habilidades del algoritmo? ¿Por qué?

¿Es posible crear un algoritmo de proximidad a la muerte?

¿Cómo debo hacer para que una matriz de objetos Bullet pueda colisionar con una matriz de objetos Zombie?

¿Cuál es la compensación tiempo-espacio en el diseño de algoritmos?