Cảnh sát đang cần sự giúp đỡ của bạn trong việc tìm kiếm nơi trú ở của một tên tội phạm, kẻ đang ẩn náu ở đâu đó trong thành phố gồm n địa điểm khác nhau, được đánh số từ 1 đến ~n~, và có ~m~ đường hai chiều kết nối hai địa điểm khác nhau.
Thông tin từ các người dân trong thành phố, cảnh sát biết được tên tội phạm đã di chuyển từ một địa điểm ~x~ nào đó để đến nơi trú ẩn ~y~ nào đó. Và các nhân chứng có trông thấy hắn xuất hiện ở ~k~ địa điểm ~u_1,u_2,…,u_k~ trên đường đi từ ~x~ đến ~y~ theo thứ tự nào đó mà cảnh sát chưa xác định. Lưu ý rằng tên tội phạm có thể di chuyển từ ~x~ đến ~y~ thông qua các địa điểm khác không có trong ~k~ địa điểm mà các nhân chứng trông thấy. Tuy nhiên, cảnh sát đã phân tích đặc điểm của tên tội phạm này và biết rằng hắn sẽ luôn di chuyển theo đường đi ngắn nhất giữa hai địa điểm ~x~ và ~y~.
Nhiệm vụ của bạn là tìm các địa điểm có thể là ~y~ để giúp cảnh sát có thể nhanh chóng tìm được hắn. Tất nhiên, có thể lời khai của các nhân chứng không đồng nhất dẫn đến không tìm thấy một địa điểm ~y~ nào thỏa mãn.
Input:
- Dòng đầu chứa số nguyên ~n,m,k~ (~1≤k≤n≤2⋅10^5,1≤m≤2⋅10^5~)
- Dòng thứ hai chứa ~k~ số nguyên ~u_i~ mô tả những địa điểm tên tội phạm đi qua (~1≤u_i≤n~)
- ~m~ dòng tiếp theo, mỗi dòng chứa ba số nguyên ~a,b,c~ mô tả có đường nối trực tiếp giữa hai địa điểm ~a~ và ~b~ có độ dài là ~c~ (~1≤a≠b≤n,1≤c≤10^9~)
Output:
- Dòng đầu ghi ra số ~p~ là số địa điểm có thể là ~y~
- Dòng thứ hai ghi ra ~p~ số nguyên là những địa điểm có thể là ~y~ theo thứ tự tăng dần.
Subtasks:
- ~15 \%~ số test có ~m=n-1~, và mỗi địa điểm được kết nối trực tiếp với tối đa 2 địa điểm khác.
- ~15 \%~ số test có ~m=n-1~
- ~15 \%~ số test có ~n,m≤100~
- ~15 \%~ số test có ~n,m≤1000~
- ~20 \%~ số test có ~k≤5~
- ~20 \%~ số test còn lại không có ràng buộc gì thêm
Sample Input:
6 6 2
1 5
1 2 1
2 3 1
3 4 1
4 5 1
5 6 1
6 1 1
Sample Output:
4
1 2 4 5
Bình luận