아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

유아와 곰두리차

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

요약
무방향 그래프에서 정점과 간선을 여러 번 지나도 되는 길이 7의 모든 보행을 세어 10^9+7로 나눈 나머지를 구한다.
난이도

보통10점 중 5점

유형
동적 계획법, 행렬, 그래프, 수학
정답자
아직 제출이 없습니다

문제

유아는 새해를 맞이하여 V.Nets의 자율 주행 자동차를 구매하였다. 유아는 새 차를 타고 바다로 가서 회를 잔뜩 먹고 올 것이다(유아는 감염병 예방을 위한 정부의 방역지침을 준수한다). 고속도로를 달리던 유아는 놀라 자빠질 수밖에 없었다. V.Nets의 자율 주행 시스템이 형편없었기 때문이다. V.Nets에 큰 배신감을 느낀 유아는 직접 자율 주행 자동차를 설계하기로 결심하였다.

곰두리차는 유아가 설계한 자율 주행 자동차이다. 곰두리차는 항상 인접한 정점 중 임의의 정점으로 이동한다. 유아는 출발점에서 도착점까지의 경로가 존재하고 시간이 무한하다면 곰두리차가 언제나 목적지에 도달할 수 있다고 믿고 있다. 유아는 문득 그래프가 주어졌을 때, 곰두리차가 지날 수 있는 경로가 몇 개인지 궁금해졌다.

하지만 유아는 이 문제를 풀지 못하였다. 문제의 난이도를 낮추기 위하여 유아는 경로상에서 동일한 정점 또는 간선을 재방문하는 것을 허용하였다.

그래프가 주어졌을 때, 곰두리차가 지날 수 있는 경로 중 길이가 7인 경로의 개수를 구하는 프로그램을 작성하시오. 곰두리차는 동일한 정점 또는 간선을 여러 번 지날 수 있다.

입력

첫 번째 줄에 정점의 개수 NN과 간선의 개수 MM이 주어진다.

이후 MM개의 줄에 걸쳐 간선이 연결하는 두 정점 번호 u,vu, v가 주어진다.

주어지는 간선은 양방향 간선이며, 모든 입력은 공백으로 구분되어 있다.

출력

첫 번째 줄에 곰두리차가 지날 수 있는 경로 중 길이가 7인 경로의 개수를 출력한다. 답이 매우 커질 수 있으므로 109+710^9 + 7로 나눈 나머지를 출력한다.

제한

  • 2≤N≤100,0002 \le N \le 100,000
  • 1≤M≤min⁡(N×(N−1)/2,100,000)1 \le M \le \min(N \times (N - 1) / 2, 100,000)
  • 1≤u,v≤N1 \le u, v \le N
  • u≠vu \ne v
  • 입력으로 주어진 그래프에는 중복 간선이 존재하지 않는다.

힌트

입력의 양이 방대하므로 빠른 입력의 사용을 권장한다.

경로의 길이는 경로를 구성하는 간선의 수를 의미한다.

예제2

  1. 예제 1

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

    입력
    3 1
    2 3
    
    예상 출력
    2