모래시계

정점이 200개 이하인 무방향 그래프에서 정확히 한 정점을 공유하는 두 삼각형으로 이루어진 부분 그래프의 개수를 센다.

보통6그래프조합론완전 탐색구현면접 대비아직 제출이 없습니다시간 제한1초메모리 제한128 MB

문제

모래시계 가공업자 택희는 매일 그래프를 하나 받아 그 안에서 모래시계를 뽑아내는 일을 한다.

모래시계는 아래와 같이 생겼다.

좀 더 정확히 말하면, 다음 조건을 만족하는 부분그래프가 모래시계다.

  1. 길이가 3인 단순 사이클 정확히 두 개로 이루어진다.
  2. 두 단순 사이클은 정점을 정확히 하나만 공유한다.
  3. 두 단순 사이클을 바깥에서 잇는 간선은 있어도 되고 없어도 된다.

세 번째 조건의 예를 들면, 아래 그래프에서 진하게 칠한 부분도 모래시계다.

어떤 두 모래시계에 속한 정점과 간선을 각각 합쳤을 때 그 결과가 두 모래시계 중 한쪽과 같다면, 이 두 모래시계는 같은 모래시계다. 이 조건을 만족하지 않는 두 모래시계는 서로 다른 모래시계다.

택희는 그래프에서 모래시계를 뽑아내는 일을 굉장히 빨리 한다. 메모리가 128MB만 있으면 그래프에 있는 서로 다른 모래시계의 개수를 1초 안에 전부 센다.

택희에게 한번 도전해 보자.

입력

첫째 줄에 그래프의 정점 수 NN (5N2005 \le N \le 200)과 간선 수 MM (6MN(N1)26 \le M \le \frac{N(N-1)}{2})이 주어진다.

둘째 줄부터 MM개의 줄에 걸쳐 각 간선의 정보가 UU VV 형태로 주어진다. (1U,VN1 \le U, V \le N, UVU \ne V)

이는 UUVV를 잇는 간선이 그래프에 있다는 뜻이다.

두 정점 사이에 간선은 많아야 한 개 있다.

출력

첫째 줄에 그래프 안에 있는 서로 다른 모래시계의 개수를 출력한다.

모래시계끼리 정점이나 간선을 공유하더라도 서로 다른 모래시계라면 모두 센다.