만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

4-사이클 (쉬움)

면접 대비

시간 제한2초메모리 제한1024 MB

요약
정점 1000개, 간선 1000개 이하의 단순 무향 그래프에서 길이가 4인 서로 다른 단순 사이클의 개수를 10^9+7로 나눈 나머지로 구합니다.
난이도

보통10점 중 4점

유형
그래프, 조합론, 해시맵
정답자
아직 제출이 없습니다

문제

NN개의 정점과 MM개의 무방향 간선으로 이루어진 단순 그래프 GG가 주어진다. 단순 그래프는 두 정점 사이에 간선이 최대 11개 존재하며, 모든 간선이 서로 다른 두 정점을 연결하는 그래프이다. GG의 정점들은 NN 이하의 양의 정수로 번호가 매겨져 있다.

GG에서 길이가 LL인 단순 사이클은 다음 조건을 만족하는 정점의 수열 (v0,v1,⋯ ,vL)(v_0, v_1, \cdots, v_L)로 정의된다.

  • 모든 0≤i<L0 \leq i < L인 ii에 대해 viv_i와 vi+1v_{i+1}을 연결하는 간선이 GG에 존재한다.
  • 모든 0≤i<j<L0 \leq i < j < L인 i,ji, j에 대해 vi≠vjv_i \neq v_j이고, vL=v0v_L = v_0이다.

다음 연산을 이용해 두 단순 사이클이 서로 변환 가능하면, 같은 사이클로 본다.

  • 수열을 뒤집는다. 즉, (v0,v1,⋯ ,vL)(v_0, v_1, \cdots, v_L)을 (vL,⋯ ,v1,v0)(v_L, \cdots, v_1, v_0)로 바꾼다.
  • 수열의 두 번째 원소를 맨 뒤에 추가하고 첫 번째 원소를 삭제한다. 즉, (v0,v1,⋯ ,vL)(v_0, v_1, \cdots, v_L)을 (v1,⋯ ,vL,v1)(v_1, \cdots, v_L, v_1)로 바꾼다.

예를 들어, 단순 사이클 (1,2,3,4,1)(1, 2, 3, 4, 1)과 (2,1,4,3,2)(2, 1, 4, 3, 2)는 같은 단순 사이클이다. GG에서 길이가 44인 서로 다른 단순 사이클의 개수를 구한다.

입력

첫 번째 줄에 그래프 GG의 정점의 개수 NN (2≤N≤1 0002 \leq N \leq 1\,000)과 간선의 개수 MM (1≤M≤1 0001 \leq M \leq 1\,000)이 공백으로 구분되어 주어진다.

두 번째 줄부터 MM개의 줄에 걸쳐 GG의 간선을 이루는 서로 다른 두 정점 uu, vv (1≤u,v≤N1 \leq u, v \leq N)가 공백으로 구분되어 주어진다.

간선이 중복으로 들어오지 않음이 보장된다.

출력

GG에서 길이가 44인 서로 다른 단순 사이클의 개수를 109+710^9+7로 나눈 나머지를 출력한다.

단, 109+710^9+7은 소수이다.

예제3

  1. 예제 1

    입력
    6 7
    1 2
    2 3
    3 4
    4 1
    4 5
    5 6
    6 4
    
    예상 출력
    1
    
  2. 예제 2

    입력
    4 6
    1 2
    1 3
    1 4
    2 3
    2 4
    3 4
    
    예상 출력
    3
    
  3. 예제 3

    입력
    6 15
    1 2
    1 3
    1 4
    1 5
    1 6
    2 3
    2 4
    2 5
    2 6
    3 4
    3 5
    3 6
    4 5
    4 6
    5 6
    
    예상 출력
    45