Minimum Spanning Arborescence
시간 제한5초메모리 제한1024 MB
DAG의 M개 간선에 1부터 K까지의 가중치를 붙이는 모든 경우에 대해, 1번 정점을 루트로 하는 최소 신장 아보레센스의 가중치 합 기댓값을 998244353으로 나눈 나머지를 구한다.
문제
을 루트로 하는 arborescence 란 다음 조건을 만족하는 방향 그래프를 뜻한다.
- 다른 모든 정점 에 대해, 에서 로 가는 경로가 정확히 하나 존재한다.
DAG(Directed Acyclic Graph)란 사이클이 없는 유향 그래프를 뜻한다. DAG의 각 간선에 가중치가 부여되었을 때, DAG 위에서의 minimum spanning arborescence 란 다음과 같다.
- DAG위에서의 을 루트로 한 arborescence이다.
- DAG 상의 모든 정점을 포함한다.
- 사용된 간선들의 가중치 합이 최소이다. 그런 방법이 여럿 존재한다면 모두 minimum spanning arborescence이다.
정점 개, 유향 간선 개로 이루어진 DAG가 주어진다. 개의 간선에 각각 이상 이하의 가중치를 붙이는 가지의 경우에 대해, minimum spanning arborescence를 구성하는 간선의 가중치 합의 기댓값을 으로 나눈 나머지를 구하여라. 중복 간선이 있을 수 있음에 유의하라.
입력
첫 줄에 세 정수 가 주어진다.
다음 개의 줄에 걸쳐 번째 줄에 간선을 뜻하는 두 정수 가 주어진다. 이는 에서 로 가는 유향 간선이 존재함을 뜻한다.
출력
기댓값을 으로 나눈 나머지를 출력한다.
즉, 기댓값이 서로소인 두 양의 정수 , 에 대해 기약분수 의 형태로 표현될 때, 을 만족하는 유일한 정수 ()를 출력한다.
제한
- 모든 에 대하여
- 기존 DAG에서 1번 정점에서 다른 모든 정점에 도달할 수 있다.