Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Kwadraty
(kwadraty)
Limit pamięci: 256 MB
Limit czasu: 3.00 s

Jasio ostatnio zainteresował się teorią grafów. Dowiedział się, czym są tak zwane trójkąty w grafie: są to trzykrawędziowe cykle proste. Przez ostatni tydzień nic innego nie robił, tylko zliczał trójkąty w grafie. Niestety, powoli kończą mu się już grafy, dlatego postanowił zmienić temat na inny: wymyślił właśnie naturalne uogólnienie trójkątów czyli kwadraty: czterokrawędziowe cykle proste. Problem zliczania kwadratów jest już o wiele trudniejszy, dlatego postanowił poprosić Cię o pomoc.

Napisz program, który: wczyta opis grafu nieskierowanego, wyznaczy liczbę kwadratów w tym grafie i wypisze wynik na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajdują się dwie liczby naturalne N oraz M, oddzielone pojedynczym odstępem i określające kolejno: liczbę wierzchołków w grafie oraz liczbę krawędzi. W kolejnych M wierszach znajduje się opis kolejnych krawędzi grafu, po jednej krawędzi w wierszu. Opis każdej krawędzi składa się z dwóch liczb naturalnych ui oraz vi oddzielonych pojedynczymi odstępami – numery wierzchołków połączonych dwukierunkową krawędzią.

Wierzchołki grafu są numerowane kolejnymi liczbami naturalnymi od 1 do N włącznie. Krawędzie grafu nie powtarzają się: dwa wierzchołki mogą być połączone co najwyżej jedną krawędzią.

Wyjście

W pierwszym i jedynym wierszu wyjścia powinna się znaleźć jedna liczba całkowita – liczba kwadratów w grafie podanym na wejściu.

Uwaga

Dwa kwadraty uznajemy za różne, jeśli zbiory ich krawędzi są różne.

Ograniczenia

1 ≤ N ≤ 1 000, 0 ≤ M ≤ 20 000.

Przykład

Wejście Wyjście Wyjaśnienie
6 9
1 2
1 4
2 3
2 5
3 5
3 4
2 4
5 6
6 4
4

Graf przedstawiony jest na rysunku w treści zadania.

W tym przypadku kwadraty to cykle: (1,2,3,4), (2,4,3,5), (2,4,6,5), (3,4,6,5).