차량 배치
시간 제한1초메모리 제한1024 MB
각 차량이 사전순 최단 경로로 1번 지점에 도착할 때 도착 시간이 겹치지 않도록 차량을 배치하는 경우의 수를 구한다.
문제
올해 국군의 날의 행사에 시가행진 행사도 계획되었다. 그래서 시가행진에 동원된 차량을 통솔해야 하는 김 중위는 차들이 어디서 대기하다가 시가행진에 진입하게 할지를 계획하게 되었다.
김 중위는 시가행진을 시작하기 전, 시가행진에 동원된 차량을 여러 지점에 적절히 배치할 수 있다. 단, 최소 한 대의 차량이 동원되며, 배치가 가능하다면 더 동원할 수 있다. 차량의 배치가 가능한 지점들은 총 개로, 번부터 번까지 번호들이 매겨져 있으며 각 지점에는 차량을 최대 한 대만 배치할 수 있다. 또한, 개의 양방향 도로들을 통해서 지점 사이를 이동할 수 있다. 하나의 도로를 지나는 데에 분이 걸린다. 시가행진이 시작되는 장소는 번 지점을 거쳐서만 들어갈 수 있으며, 번 지점에도 차량을 배치할 수 있다.
차량의 배치가 끝나면 번 지점에 있던 차량은 바로 시가행진 행사에 들어가서 사라지고, 모든 차량은 번 지점으로 이동하기 시작한다. 이때, 모든 차량은 최단 경로를 통해 동일한 속도로 이동하며, 만약 최단 경로가 여러 가지라면 그 중 다음으로 가는 정점의 번호가 작은 경로를 따라 이동한다. 이후에 번 지점에 무사히 도착한 차량은 직후 시가행진 행사에 들어가서 사라진다. 다만 두 차량이 같은 시간에 번 지점을 포함한 같은 지점에 도달하면 충돌 사고가 난다.
김 중위를 도와서 지점들을 잇는 도로들이 주어졌을 때, 충돌 사고가 나지 않는 차량 배치 방법의 개수를 으로 나눈 나머지를 구해보자. 은 소수이다.
입력
첫 번째 줄에 지점의 개수 과 도로의 개수 이 공백으로 구분되어 정수로 주어진다.
이후 개의 줄에 걸쳐 각 도로가 잇는 서로 다른 두 지점을 나타내는 정수 , 가 공백으로 구분되어 정수로 주어진다.
임의의 두 지점마다, 둘을 잇는 도로는 최대 하나이다. 또한, 모든 지점에서 번 지점으로 이동할 수 있다.
출력
충돌 사고가 나지 않는 차량 배치 방법의 개수를 로 나눈 나머지를 출력한다.