QOJ.ac

QOJ

时间限制: 2.0 s 内存限制: 1024 MB 总分: 100 可 Hack ✓

#14718. 식사 모임

统计

아름다운 캠퍼스에서 Panda와 친구들은 식사를 하기 위해 만나기로 했습니다. 가는 길에 서로 자유롭게 이야기를 나눌 수 있기 때문에, 그들은 이동하는 동안 함께 시간을 보내는 것을 좋아합니다.

캠퍼스는 $n$개의 정점과 길이를 가진 $m$개의 간선으로 이루어진 연결 무방향 그래프로 모델링됩니다. 모임 장소는 정점 $1$에 위치한 쇼핑몰입니다. $k$명의 친구들이 서로 다른 정점에서 출발하여 쇼핑몰로 이동합니다. 모든 친구들은 같은 속력(단위 시간당 $1$ 단위 거리)으로 이동하며, 간선 위의 임의의 위치에서 이동 방향을 바꿀 수 있습니다(예제 설명 참조).

모든 친구들이 쇼핑몰에 도착할 수 있는 가장 빠른 시각을 $t_{\text{meet}}$라고 합시다. 이 가장 빠른 모임 시각을 기준으로, 각 친구마다 개별적으로 쇼핑몰에 최종적으로 다 모이기 전까지 동행과 함께 보낼 수 있는 최대 총시간을 구하십시오(동행과 함께한다는 것은 정점이든 간선 위의 한 지점이든 그래프 위의 정확히 같은 위치에 다른 친구가 적어도 한 명 함께 있다는 뜻입니다).

특정 친구 $i$를 고려할 때, 다른 모든 친구 $j \neq i$의 경로와 이동 전략은 모든 친구가 늦어도 $t_{\text{meet}}$까지는 쇼핑몰에 도착한다는 조건 아래 친구 $i$의 동행 시간을 최대화하도록 최적화됩니다.

입력

첫째 줄에 테스트 케이스의 수를 나타내는 정수 $T$ ($1 \le T \le 10^4$)가 주어집니다.

각 테스트 케이스의 첫째 줄에는 정점의 수, 간선의 수, 친구의 수를 각각 나타내는 세 정수 $n, m, k$ ($2 \le n \le 3 \times 10^5$, $n - 1 \le m \le 10^6$, $2 \le k \le n$)가 주어집니다.

둘째 줄에는 친구들의 출발 정점을 나타내는 $k$개의 서로 다른 정수 $a_1, a_2, \ldots, a_k$ ($1 \le a_i \le n$)가 주어집니다.

다음 $m$개의 줄에는 각각 세 정수 $u, v, w$ ($1 \le u, v \le n$, $u \neq v$, $1 \le w \le 10^9$)가 주어지며, 이는 정점 $u$와 정점 $v$ 사이에 길이가 $w$인 간선이 있음을 나타냅니다. 그래프는 연결되어 있으며 중복 간선이나 자기 루프가 없습니다.

모든 테스트 케이스에서 $n$의 합은 $3 \times 10^5$을 초과하지 않으며, $m$의 합은 $10^6$을 초과하지 않습니다.

출력

각 테스트 케이스마다 각 친구가 동행과 함께 보낼 수 있는 최대 시간을 나타내는 $k$개의 부동소수점 수를 공백으로 구분하여 한 줄에 출력합니다. 각 수는 소수점 아래 정확히 첫째 자리까지 표시해야 합니다.

예제

입력 1

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

출력 1

3.0 3.0
1.5 1.5
3.5 3.5 2.5

참고

예제의 세 번째 테스트 케이스에서 쇼핑몰에 모일 수 있는 가장 빠른 시각은 $5$ 단위 시간입니다.

  • 정점 $1$과 정점 $2$에서 출발한 친구들은 $1.5$ 단위 시간 만에 간선 $(1, 2)$의 중간 지점에서 만나고, 다시 $1.5$ 단위 시간 동안 함께 쇼핑몰로 돌아온 뒤, 쇼핑몰에서 $2$ 단위 시간 동안 기다려 총 $3.5$ 단위 시간 동안 함께할 수 있습니다.
  • 정점 $3$에서 출발한 친구는 $2.5$ 단위 시간 만에 간선 $(1, 3)$의 중간 지점에서 정점 $1$에서 온 친구를 만나 $2.5$ 단위 시간 동안 함께 돌아오므로, 총 $2.5$ 단위 시간 동안 함께할 수 있습니다.

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.