#P1081. 希望有羽毛和翅膀

希望有羽毛和翅膀

题目描述

小 X 被禁锢在他的内心深处。

这里有 nn 个点和 mm 条边,小 X 现在在 11 号点。每个点都承载了小 X 的一段痛苦的回忆,点和点之间用一条边相连,每条边只能单向通行。每条边对于小 X 来说都有一个痛苦值 kik_i

小 X 逃离这里的唯一方法是:拿到所有的羽毛,拼成翅膀。这些羽毛共有 pp 根,散落在 nn 个点上,每个点至多有一根羽毛,有羽毛的点的编号为 p1pnp_1-p_n。小 X 不想去过多回忆这些令他痛苦的事,所以他向你求助。请你告诉他,他拿到所有的羽毛至少需要承受多少点痛苦值。如果他永远无法逃离这里,请告诉他 Impossible!\text{Impossible!}

输入格式

m+2m+2 行。

11 行,三个整数 n,m,pn,m,p

22m+1m+1 行,每行三个整数 ai,bi,kia_i,b_i,k_i,表示第 ii 条边从 aia_i 出发到 bib_i 结束,其痛苦值为 kik_i

m+2m+2 行,pp 个整数 pip_i,表示有羽毛的点的编号。 保证给出的数组 (ai,bi)(a_i,b_i) 互不重复。

输出格式

11 行。

如果小 X 能逃离这里,输出他拿到所有的羽毛至少需要承受的痛苦值。

如果小 X 不能逃离这里,输出 Impossible!\text{Impossible!}

3 4 2
1 2 2
1 3 4
2 3 3
3 2 2
2 3
5
3 2 1
2 1 3
1 3 2
2
Impossible!

数据范围

对于 15%15\% 的数据,n5n \le 5m10m \le 10

对于另外 15%15\% 的数据,p=1p=1

对于 100%100\% 的数据,1ai,bi,pin2001 \le a_i,b_i,p_i \le n \le 2001m1041 \le m \le 10^41p121 \le p \le 121ki50001 \le k_i \le 5000