Messages

Xem PDF



Tác giả:
Dạng bài
Ngôn ngữ cho phép
Assembly, Awk, C, C#, C++, Clang, Cobol, D, Groovy, Haskell, JS, Java, Kotlin, Lua, Node JS, OCaml, ObjectiveC, Output, PHP, Pascal, Perl, Prolog, Pypy, Pypy 3, Python, Ruby, Rust, Scala, Scratch, Swift
Điểm: 2000 (p) Thời gian: 2.0s Bộ nhớ: 1G Input: bàn phím Output: màn hình

Một hệ thống máy tính gồm \(n\) máy, các máy được đánh số từ \(1\) đến \(n\)\(m\) cáp nối truyền thông tin hai chiều, giữa hai máy chỉ có nhiều nhất một cáp nối. Máy tính \(1\) muốn truyền \(k\) gói tin tương ứng đến các máy \(c_1, c_2, \dots, c_k\). Mỗi thời điểm, các gói tin có thể tạm thời được lưu trữ trên các máy tính hoặc được truyền trên các cáp nối nhưng không có hai gói nào được truyền trên cùng một cáp tại cùng một thời điểm.

Yêu cầu

Xác định thời gian ngắn nhất để chuyển toàn bộ các gói tin đến đích.

Input

  • Dòng đầu chứa hai số nguyên \(n, m\) (\(m \le 500\)).
  • Tiếp theo là \(m\) dòng, mỗi dòng chứa hai số nguyên mô tả các cáp nối.
  • Dòng tiếp theo chứa số nguyên \(k\).
  • Dòng tiếp theo chứa \(k\) số nguyên \(c_1, c_2, \dots, c_k\).

Output

  • Gồm một dòng, chứa một số là thời gian ngắn nhất để tất cả các tin nhắn tới đích.

Example

Test 1

Input
5 4
1 2
2 3
2 4
2 5
3
3 4 5
Output
4

Scoring

  • Subtask \(1\): \(n \le 10, k \le \min(n, k)\).
  • Subtask \(2\): \(n \le 100, k \le n\).

Nguồn: 3D'21

Bình luận

Mới nhất
Tải bình luận...

Không có bình luận nào.