题目描述
给定一张有向图,顶点编号为 0,1,…,n。你需要从顶点 0 出发,到达顶点 n。
图中有 m 条有向边,第 i 条边从 ai 指向 bi,长度为 ci。保证:
- 对任意边都有 ai<bi,因此图中不存在有向环;
- 不存在两条边 i,j 满足 ai<aj<bi<bj。
顶点 1,2,…,n−1 各有一种颜色,第 i 个中间顶点的颜色记为 colori。
对于每一种颜色,你必须满足:要么经过这种颜色的所有顶点,要么一个也不经过。也就是说,如果两个中间顶点颜色相同,那么所选路径必须同时经过它们,或同时不经过它们。
请找出从 0 到 n 的合法路径的最小总长度。如果不存在合法路径,输出 −1。
输入格式
第一行两个整数 n,m,表示终点编号为 n,以及边数。
接下来 m 行,每行三个整数 ai,bi,ci,表示一条从 ai 到 bi、长度为 ci 的有向边。
最后一行包含 n−1 个整数 color1,color2,…,colorn−1,其中 colori 表示顶点 i 的颜色。
输出格式
输出一个整数,表示合法路径的最小总长度。如果不存在合法路径,输出 −1。
样例输入
3 4
0 1 10
0 2 10
1 2 10
2 3 10
1 2
样例输出
20
数据范围
- 2≤n≤1000;
- 1≤m≤1000;
- 0≤ai<bi≤n;
- 1≤ci≤106;
- 1≤colori≤1000;
- 不存在 i,j 使得 ai<aj<bi<bj。