Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024
Problem description
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 |
|
|
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). |