Cómo resolver este problema sin obtener un TLE

No he resuelto este problema, pero acabo de darme cuenta del truco involucrado en esto. No estoy seguro de que esto lo haga, pero definitivamente reducirá la complejidad del tiempo. En los algoritmos DFS normales, la complejidad resulta ser O (V + E) si está implementando usando una lista de adyacencia. Ahora, si observa de cerca lo que significan los componentes conectados, ¡ un vértice aislado también es un componente conectado en sí mismo!

Este es el truco, supongo en esto. Cuando esté escaneando los bordes, solo haga un seguimiento de la cantidad de vértices únicos que tiene. Digamos que el número de vértices únicos resulta ser x. Ahora no necesita aplicar DFS para cada vértice porque eso le daría TLE. Solo necesita ver los vértices cubiertos en los bordes que nos han dado. A lo sumo 2 * M vértices únicos pueden estar allí (¿Por qué?). Entonces su complejidad DFS resultaría ser O (M). Si, por ejemplo, hemos descubierto que tenemos componentes conectados A fuera del conjunto de bordes dados y tenemos N – x vértices no cubiertos en los bordes, entonces el número total de componentes conectados, es decir, el número total de galletas necesarias es A + (N – X)

Feliz codificación !!