4-사이클 (Hard)
시간 제한2초메모리 제한1024 MB
정점이 최대 10^5개, 간선이 최대 10^5개인 무방향 그래프에서 길이가 4인 서로 다른 단순 사이클의 개수를 10^9+7로 나눈 나머지로 구합니다.
문제
개의 정점과 개의 무방향 간선으로 이루어진 단순 그래프 가 주어진다. 단순 그래프는 두 정점 사이에 간선이 최대 개 있고, 모든 간선이 서로 다른 두 정점을 잇는 그래프이다. 의 정점들은 이하의 양의 정수로 번호가 매겨져 있다.
그래프 에서 길이가 인 단순 사이클은 다음 조건을 만족하는 정점의 수열 이다.
- 모든 인 에 대해 와 을 잇는 간선이 에 있다.
- 모든 인 에 대해 이고, 이다.
다음 연산으로 두 단순 사이클을 서로 바꿀 수 있으면 같은 사이클로 본다.
- 수열을 뒤집는다. 즉, 을 로 바꾼다.
- 수열의 두 번째 원소를 맨 뒤에 추가하고 첫 번째 원소를 삭제한다. 즉, 을 로 바꾼다.
예를 들어 단순 사이클 과 는 같은 단순 사이클이다. 그래프 에서 길이가 인 서로 다른 단순 사이클의 개수를 구해 보자.
입력
첫 번째 줄에 정점의 개수 ()과 간선의 개수 ()이 공백으로 구분되어 주어진다.
두 번째 줄부터 줄에 걸쳐 간선을 이루는 서로 다른 두 정점 ()가 공백으로 구분되어 주어진다.
간선이 중복으로 들어오지 않음이 보장된다.
출력
그래프 에서 길이가 인 서로 다른 단순 사이클의 개수를 로 나눈 나머지를 출력한다.
단, 은 소수이다.