RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R01523

길이 K 경로의 수 행렬 거듭제곱

Platinum IV 플래티넘 IV
난이도
2s
시간 제한
256MB
메모리 제한
0
맞았습니다!!
0
제출 수
0.0%
정답률
레이팅

의견: 0

설명

어떤 나라의 교통망은 \(V\) 개의 도시와 \(E\) 개의 일방통행 도로로 이루어져 있다. 각 도로는 한 도시에서 다른 도시로(혹은 같은 도시로 되돌아오는 자기 순환일 수도 있다) 한쪽 방향으로만 통행할 수 있다. 두 도시 사이에는 여러 개의 도로가 있을 수도 있으며, 이들은 서로 다른 도로로 취급한다.

당신은 도시 \(s\) 에서 출발하여 도시 \(t\) 에 도착하되, 정확히 \(K\) 개의 도로를 사용하는 서로 다른 이동 경로(걷기, walk)의 수가 궁금하다. 같은 도시나 같은 도로를 여러 번 지나도 상관없으며, 사용한 도로의 순서열이 다르면 서로 다른 경로로 센다.

이 경로의 수는 매우 클 수 있고 \(K\) 또한 천문학적으로 클 수 있으므로, 답을 \(10^9+7\) 로 나눈 나머지를 출력하라.

\(K = 0\) 인 경우, 도로를 하나도 사용하지 않는 길이 \(0\) 의 경로는 \(s = t\) 일 때 정확히 한 가지가 존재하고, \(s \ne t\) 이면 존재하지 않는다.

제약

\(1 \le V \le 50\)

\(0 \le E \le V^2\)

\(0 \le K \le 10^{18}\)

\(1 \le s, t \le V\)

\(1 \le u, v \le V\) (자기 순환 및 다중 도로 허용)

입력 형식

첫째 줄에 다섯 정수 \(V\), \(E\), \(K\), \(s\), \(t\) 가 공백으로 구분되어 주어진다 (\(1 \le V \le 50\), \(0 \le E \le V^2\), \(0 \le K \le 10^{18}\), \(1 \le s, t \le V\)).

다음 \(E\) 개의 줄에는 각각 두 정수 \(u\), \(v\) (\(1 \le u, v \le V\)) 가 주어지며, 도시 \(u\) 에서 도시 \(v\) 로 가는 일방통행 도로가 있음을 뜻한다. \(u = v\) (자기 순환) 와 같은 \((u, v)\) 의 중복(다중 도로)이 모두 허용된다.

출력 형식

도시 \(s\) 에서 도시 \(t\) 로 정확히 \(K\) 개의 도로를 사용해 이동하는 서로 다른 경로의 수를 \(10^9+7\) 로 나눈 나머지를 한 줄에 출력한다.

예제 1
입력
3 3 3 1 1
1 2
2 3
3 1
출력
1
설명

도로는 1→2, 2→3, 3→1 의 한 방향 사이클을 이룬다.
도시 1에서 도로 3개를 정확히 사용해 도시 1로 돌아오는 경로는 1→2→3→1 단 하나이므로 답은 1이다.

예제 2
입력
4 4 2 1 4
1 2
1 3
2 4
3 4
출력
2
설명

도시 1에서 도시 4로 도로 2개를 사용하는 경로는 1→2→4 와 1→3→4 두 가지이므로 답은 2이다.

예제 3
입력
2 1 0 1 1
1 2
출력
1
설명

K=0 이므로 도로를 하나도 쓰지 않는다. s=t=1 이라 길이 0 경로가 1개 존재한다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

길이 K 경로의 수 행렬 거듭제곱

개요
출제자 난이도 Platinum IV 플래티넘 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

길이 K 경로의 수 행렬 거듭제곱

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8