Abstract
시간 제한2초메모리 제한2048 MB
매초 각 노드의 값이 간선을 따라 나가는 이웃 노드로 전달되고, 유일한 싱크 노드는 자신의 값의 절반을 받습니다. 모든 값이 0이 되는 첫 시점을 998244353으로 나눈 나머지로 구합니다.
Abstract
Time limit: 2000 ms. Memory limit: 2048 MB.
문제
정점이 개, 간선이 개인 DAG(방향 비순환 그래프)가 주어진다. 나가는 간선이 없는 정점 가 정확히 하나 있다. 번 정점에는 정수 가 적혀 있다.
매초 다음 과정이 일어난다.
- 각 정점 에 대해 로 둔다.
- 각 정점 에 대해 으로 둔다.
- 각 정점 와 에서 로 가는 간선이 있는 각 정점 에 대해, 를 에 더한다.
- 를 에 더한다.
모든 가 처음으로 0이 되는 시각을 구한다. 답이 매우 클 수 있으므로 으로 나눈 나머지를 구한다.
입력
첫째 줄에 정점 수 과 간선 수 이 주어진다 (; ).
둘째 줄에 개의 정수 ()이 주어진다.
이어지는 개의 줄에는 각각 에서 로 가는 간선을 나타내는 두 정수 , ()가 주어진다.
그래프는 다중 간선이 없는 DAG이며, 나가는 간선이 없는 정점은 정확히 하나라고 보장된다.
출력
모든 가 처음으로 0이 되는 시각을 으로 나눈 나머지로 한 줄에 출력한다.
힌트
이 문제는 Codeforces 1704E와 공교롭게도 매우 비슷하다.