시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 (추가 시간 없음) | 1024 MB | 184 | 74 | 68 | 41.212% |
새내기 현서는 이번 학기에도 고민이 많은데, 그중 가장 큰 고민은 아침 수업이 많아서 수업 시간에 맞춰 강의실을 도착하지 못할 것 같다는 것이다! 고민 끝에 현서는 학교 주변의 자취방을 하나 구하기로 결심했다.
학교 주변은 정점이 N개, 간선이 M개인 그래프로 표현된다. 학교는 1번 정점에 있으며, 그 외의 정점에는 현서가 계약할 수 있는 자취방이 하나씩 있다. 간선은 학교와 자취방, 또는 자취방과 자취방 사이의 도로를 나타낸다. 도로는 양쪽 방향으로 모두 사용할 수 있다.
각 도로는 교통량이라는 값을 가지며, 교통량이 x인 도로를 통과하는 데에는 양쪽 방향으로 동일하게 x분의 시간이 걸린다. 다양한 사건에 의해서 각 도로의 교통량은 매번 일정하지는 않는데, 구체적으로 i번 도로의 교통량은 절반의 확률로 ai이고, 나머지 절반의 확률로 bi가 된다. 교통량은 각 도로마다 독립적으로 정해지며, 현서가 길을 지날 때마다 바뀔 수 있다. ai 또는 bi가 음수일 수도 있는데, 이 경우에는 도로를 통과할 때 시간이 역행한다고 생각하면 된다.
이 상황에서 현서는, 적당한 정해진 이동을 선택했을 때 학교에 도착했을 때 걸리는 시간의 기댓값이 T분 이하가 되도록 할 수 있는 위치의 자취방을 고려하려고 한다. 구체적으로는 아래와 같다.
현서를 위해 위 조건을 만족하는 자취방들을 모두 구해주자.
첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N, M ≤ 200 000)
둘째 줄부터 M개의 줄에 걸쳐 각 간선이 잇는 두 정점의 번호 ui와 vi, 그리고 정수 ai와 bi가 공백으로 구분되어 주어진다. (1 ≤ ui, vi ≤ N; ui ≠ vi; −109 ≤ ai, bi ≤ 109) 같은 정점 쌍을 두 번 잇는 입력은 주어지지 않는다. 즉, 모든 1 ≤ i, j ≤ M에 대해 {ui, vi} = {uj, vj}이면 i = j이다.
(M + 2)째 줄에 정수 T가 주어진다. (−2 × 1015 ≤ T ≤ 2 × 1015)
첫째 줄에 조건을 만족하는 자취방의 개수 K를 출력한다. 조건을 만족하는 자취방이 없으면 0을 출력한다.
첫째 줄에 0이 아닌 값을 출력했다면, 둘째 줄에 조건을 만족하는 자취방들이 위치한 정점의 번호를 공백으로 구분하여 오름차순으로 출력한다.
4 5 1 2 7 5 1 3 1 4 2 3 1 2 2 4 6 2 3 4 2 3 4
2 2 3
4 4 1 2 2 4 2 3 3 5 1 3 -3 1 3 4 5 7 -3
3 2 3 4
6 5 1 2 8 -4 1 3 2 3 2 3 0 4 3 4 -1 1 5 6 -1 -1 2
1 2
3 3 1 2 9 10 1 3 -3 27 2 3 -11 11 5
0
첫 번째 예제에서, 2번 정점의 경우 2 → 3 → 1 순으로 이동하면 기댓값이 4분이 된다. 3번 정점의 경우 3 → 1 순으로 이동하면 기댓값이 2.5분이 된다.
세 번째 예제에서 주어지듯이, 학교에서 도달할 수 없는 자취방이 같이 주어지는 것도 가능하다.