QOJ.ac

QOJ

時間限制: 3 s 記憶體限制: 1024 MB 總分: 100

#1828. TraveLog

统计

오랜 시간 떨어져 지낸 앨리스와 밥이 재회했습니다. 그들은 $n$개의 도시가 있는 나라에 살고 있으며, 도시 이름은 창의적으로 1번부터 $n$번까지 붙여져 있습니다. 밥은 자신의 집이 있는 1번 도시에서 앨리스의 집이 있는 $n$번 도시까지 차를 몰고 갔습니다.

앨리스가 밥에게 어떤 경로로 왔는지 물었을 때, 밥은 자신이 기억하지 못한다는 사실에 당황했습니다. 밥은 효율적인 사람이라 쉬지 않고 운전했으며, 자신이 택한 경로보다 더 빠른 경로는 없다는 것을 알고 있습니다. 또한 그는 새로 산 국립 모험 회사(NAC)의 TraveLog를 가지고 있습니다! 밥이 도시를 지날 때마다, TraveLog는 1번 도시를 출발한 시점부터 현재 도시에 도착한 시점까지의 시간을 기록합니다.

위의 배치도에서 밥이 1번 도시에서 $n$번 도시까지 갈 수 있는 가장 빠른 경로는 $1 \to 2 \to 3 \to 5$ 또는 $1 \to 4 \to 5$ 두 가지가 있습니다. 두 경로 모두 총 9의 시간이 소요됩니다. 첫 번째 경로는 TraveLog에 0, 3, 7, 9가 기록되고, 두 번째 경로는 0, 5, 9가 기록됩니다.

불행히도 밥의 TraveLog 메모리가 손상되었습니다. 밥은 일부 시간이 사라졌고, 남은 시간들은 임의로 섞였다고 생각합니다. TraveLog에 남아 있는 정보를 바탕으로 밥의 경로를 복원할 수 있을까요?

입력

첫 번째 줄에는 세 정수 $n$ ($2 \le n \le 2 \cdot 10^5$), $m$ ($1 \le m \le 3 \cdot 10^5$), $d$ ($1 \le d \le n$)가 주어집니다. 여기서 $n$은 나라의 도시 수, $m$은 도시 간의 단방향 도로 수, $d$는 밥의 손상된 TraveLog에 남아 있는 시간 기록의 수입니다. 도시는 1부터 $n$까지의 번호로 식별됩니다. 밥은 1번 도시에 살고, 앨리스는 $n$번 도시에 삽니다.

다음 $m$개의 줄에는 각각 세 정수 $u, v$ ($1 \le u, v \le n, u \neq v$)와 $h$ ($1 \le h \le 10^6$)가 주어집니다. 각 줄은 도시 $u$에서 도시 $v$로 이동하는 데 $h$만큼의 시간이 걸리는 단방향 도로를 나타냅니다. 1번 도시에서 $n$번 도시로 가는 경로는 적어도 하나 존재함이 보장됩니다. 임의의 두 도시 쌍 사이에는 여러 개의 도로가 있을 수 있습니다.

다음 $d$개의 줄에는 각각 하나의 정수 $t$ ($0 \le t \le 10^{18}$)가 주어집니다. 이것이 밥의 TraveLog에 남아 있는 정보입니다. 각 줄은 밥이 1번 도시에서 경로상의 다른 도시로 이동하는 데 걸린 시간 기록입니다. 이 값들은 서로 다름이 보장됩니다.

출력

출력 형식은 밥의 TraveLog와 일치하는 경로의 수에 따라 달라집니다.

  • 밥의 TraveLog와 일치하는 경로가 없으면 0을 출력합니다.
  • 밥의 TraveLog와 일치하는 경로가 여러 개라면 1을 출력합니다.
  • 그 외의 경우, 첫 번째 줄에 밥의 경로에 포함된 도시의 수를 출력합니다. 다음 줄부터는 밥이 방문한 도시를 방문한 순서대로 한 줄에 하나씩 출력합니다.

예제

예제 1

5 5 2
1 2 3
2 3 4
3 5 2
1 4 5
4 5 4
5
9
3
1
4
5

예제 2

6 8 2
1 2 1
2 3 2
3 6 8
1 4 3
4 5 4
5 6 4
5 2 7
1 6 13
0
3
1

예제 3

2 1 1
1 2 10
5
0

Figure 1. 밥이 1번 도시에서 n번 도시까지 갈 수 있는 가장 빠른 경로 예시

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.