Contando Triángulos


Submit solution

Points: 100 (partial)
Time limit: 2.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
Ada, Assembly, Awk, BrainF***, C, C#, C++, Dart, Go, Java, JS, Kotlin, Lua, Pascal, Perl, Prolog, Python, Scala, Swift, VB

Alex y Dima tienen un grafo completo no dirigido de n nodos. De este grafo Alex se queda con m aristas y Dima se queda con las \frac{n \cdot (n - 1)}{2} - m aristas restantes.

Ellos quieren saber cuántos triángulos hay en cada uno de estos grafos. Un triángulo es un ciclo simple de tamaño 3.

Ayuda a Alex y Dima con esta tarea.

Nota: un grafo completo cumple que cada par de nodos (distintos) está conectado por una arista.

Entrada

La primera línea contiene los enteros n y m \; (1 \leq n \leq 10^6, 0 \leq m \leq 10^6). Las siguientes m líneas describen las aristas de Alex. Cada una de estas líneas contienen dos enteros a_i y b_i \; (1 \leq a_i, b_i \leq n, a_i \neq b_i).

Se garantiza que el grafo inicial es completo, no dirigido y simple (no contiene multiaristas ni lazos).

También se garantiza que ambos grafos, el de Alex y el de Dima, son simples.

Salida

En una única línea imprima la cantidad de triángulos que hay en ambos grafos, es decir, triángulos de Alex + triángulos de Dima.

Ejemplos

Entrada 1
5 5
1 2
1 3
2 3
2 4
3 4
Salida 1
3
Entrada 2
5 3
1 2
2 3
1 3
Salida 2
4

Explicación de los ejemplos

En el primer ejemplo Alex tiene los triángulos (1, 2, 3) y (2, 3, 4); Dima tiene el triángulo (1, 4, 5). En total hay tres triángulos.


Comments

There are no comments at the moment.