Năm nay kỳ thi Olympic SV được tổ chức tại trường Sư phạm kỹ thuật nhưng nhà trường đã triển khai tham quan làng Đại học bên cạnh với nhiều địa điểm kỳ thú. Làng này này có ~n~ địa điểm (đánh số từ 1 đến ~n~) và được nối với nhau bằng ~m~ con đường hai chiều để có thể đi từ bất kỳ địa điểm nào đến bất kỳ địa điểm nào khác. Trong số ~n~ địa điểm này, có ~k~ địa điểm hấp dẫn các Sinh viên đến tham qan du lịch. Khánh An là một thí sinh tham dự kỳ thi và lần đầu tiên được đến làng, nên An muốn thăm tất cả k địa điểm hấp dẫn trên.
Ban đầu An đang ở địa điểm ~1~. Khi đi từ địa điểm này đến địa điểm khác sẽ mất một số thời gian di chuyển. Trong đó có điều đặc biệt là An có thể di chuyển tức thời từ địa điểm hấp dẫn đang tham quan hiện tại đến một địa điểm hấp dẫn đã tham quan mà không mất thời gian di chuyển nào (việc di chuyển tức thời không mất thời gian di chuyển này cho phép An di chuyển nhanh chóng giữa các địa điểm của làng).
Bạn hãy giúp An tính tổng thời gian di chuyển tối thiểu để tham quan tất cả k địa điểm hấp dẫn. Chú ý rằng ta chỉ quan tâm đến thời gian di chuyển, chứ không quan tâm đến thời gian tham quan tại địa điểm đó và không nhất thiết phải quay trở về địa điểm 1 khi kết thúc hành trình.
Ví dụ mạng lưới địa điểm và đường đi như hình vẽ sau. Các địa điểm biểu thị bởi các đường tròn và các địa điểm hấp dẫn 2,4,5 được biểu thị bởi các đường tròn tô kín. Các đoạn thẳng nối hai đường tròn biểu thị một con đường nối hai địa điểm tương ứng. Các số viết trên mỗi đoạn thẳng biểu thị thời gian di chuyển giữa hai địa điểm.
Một hành trình của An thăm tất cả các địa điểm hấp dẫn với tổng thời gian di chuyển tối thiểu là:
- Bắt đầu từ địa điểm 1 đến địa điểm 2 (địa điểm hấp dẫn): thời gian di chuyển là 2;
- Tiếp theo đến địa điểm 3: thời gian di chuyển là 1;
- Tiếp theo đến địa điểm 5 (địa điểm hấp dẫn): thời gian di chuyển là 2;
- Tiếp theo, do địa điểm 5 hiện tại là hấp dẫn nên di chuyển tức thời (không mất thời gian) trở lại địa điểm hấp dẫn 2: thời gian di chuyển là 0;
- Sau đó đến địa điểm 4 (địa điểm hấp dẫn), rồi kết thúc hành trình: thời gian di chuyển là 3.
Tổng thời gian di chuyển của hành trình trên là: ~2+1+2+0+3=8~.
Input: Dòng đầu tiên chứa hai số nguyên ~n~ và ~m~ trong đó ~1 \le n \le 10^5, \, 0 \le m \le 10^5~ cho biết có bao nhiêu địa điểm và con đường trong thành phố. Dòng thứ ~i~ trong ~m~ dòng tiếp theo chứa ba số nguyên ~u_i,v_i,w_i~ với ~1 \le u_i, v_i \le n~ và ~1 \le w_i \le 10^9~ mô tả của một con đường hai chiều nối hai địa điểm ~u_i,v_i~ và thời gian cần thiết để đi từ địa điểm này đến địa điểm kia bằng con đường này là ~w_i.~ Hai địa điểm bất kỳ được nối với nhau không quá một con đường. Dữ liệu đảm bảo rằng có thể đi từ bất kỳ địa điểm nào đến bất kỳ địa điểm nào khác. Dòng tiếp theo chứa số nguyên ~k~ là số địa điểm hấp dẫn. Dòng tiếp theo chứa ~k~ số nguyên phân biệt ~p_1,p_2,…,p_k~ cho biết số thứ tự của các địa điểm hấp dẫn.
Output: Số nguyên duy nhất là thời gian di chuyển tối thiểu để An tham quan tất cả các địa điểm hấp dẫn. Chú ý rằng thứ tự tham quan các địa điểm hấp dẫn là tùy ý.
Sample input:
5 6
1 2 2
2 3 1
2 4 3
3 4 5
3 5 2
4 5 4
3
4 5 2
Sample output:
8
- Có ~10\%~ số test ứng với ~k=1;~
- Có ~10\%~ số test khác ứng với ~k=n;~
- Có ~20\%~ số test khác ứng với ~1 \le n \le 10;\, 0 \le m \le 10; 1 \le w_i \le 10^2; 1<k<n;~</li>
- Có ~20\%~ số test khác ứng với ~1 \le n \le 10^2;\, 0 \le m \le 10^2; 1 \le w_i \le 10^5;1<k<n;~</li>
- Có ~20\%~ số test khác ứng với ~1 \le n \le 10^3; \, 0 \le m \le 10^3;1<k<n;~</li>
- Có ~20\%~ số test còn lại không có ràng buộc gì thêm.
Comments