G - Campañas publicitarias

Languages: C, C++, Java, JavaScript, Haskell, Tiger, Python, Pascal, C#
Time & Memory limits: (details)

Un país contiene $N$ ciudades conectadas por carreteras unidireccionales. Si hay una carretera que va de $A$ a $B$ entonces se puede decir que hay un camino que va de $A$ a $B$. Si hay un camino que va de $A$ a $B$ y otro camino que va de $B$ a $C$, entonces se puede decir que hay un camino de $A$ a $C$.

Un conjunto de ciudades se dice que es viable si para todo par de ciudades ($A$, $B$) que pertenecen al conjunto se cumple exactamente una de las dos condiciones siguientes:

  • Hay un camino que va de $A$ a $B$ y otro camino que va de $B$ a $A$    (los caminos pudieran involucrar ciudades que no estén en el grupo.
  • No hay camino que vaya de $A$ a $B$ y no hay camino que vaya de $B$ a $A$.

Algunas marcas están haciendo campañas publicitarias en el país. Cada marca puede hacer su campaña en solo un conjunto de ciudades, y este debe ser viable. El presidente decide que no quiere que haya muchas marcas, para que el país no se vuelva un caos publicitario, y que cada ciudad debe participar en exactamente una campaña. Determine cuál es la menor cantidad de campañas que se pueden hacer.

Input

En la primera línea se especificarán dos enteros separados por un espacio $N$ y $E$ $(1 \leq N, E \leq 100000)$, la cantidad de ciudades y la cantidad de carreteras respectivamente.

A continuación habrá E líneas con dos enteros $A$ y $B$ separados por un espacio indicando que hay una carretera de la ciudad $A$ a la ciudad $B$. Las ciudades están numeradas de $0$ a $N - 1$.

Output

Entero $M$ que sea la menor cantidad de marcas que pueden hacer su campaña en el país.

Sample test(s)

Input
4 4 0 1 1 2 2 3 3 0
Output
1
Input
7 9 0 1 0 2 1 6 2 6 2 4 4 3 3 2 6 5 5 6
Output
3