题目描述
变色龙今天要去的觅食地点看成一条直线并从1到n编号,觅食点之间一共有n-1条路,这些路上都散落着落叶。对于第i条路,变色龙每次通过这条路都要花费ai的时间,它也可以选择先花费ci的时间清理这条路上的落叶,清理落叶之后每次它经过的时候,只需要花费bi的时间就可以通过了。变色龙今天计划去m个觅食点,它将按照p1、p2、p3、...、pm的顺序去觅食,同一个觅食点可能经过多次,顺序相邻的觅食点的位置不一定相邻,大聪明想知道变色龙今天在路上花费的总时间最少是多少。请你补充完整这个程序,帮大聪明解决这个问题吧。
#include <algorithm>
#include <iostream>
using namespace std;
int n, m, ans;
int cnt[1005],d[1005],p[1005],a[1005],b[1005],c[1005];
void add(int l, int r)
{
if (l > r)
swap(l, r);
r--;
d[r + 1]--;
d[l]++;
}
int main()
{
cin >> n >> m;
for (int i = 1; i <= m; i++)
{
cin >> p[i];
}
for (int i = 1; i < n; i++)
{
cin >> a[i] >> b[i] >> c[i];
}
for (int i = 2; i <= m; i++)
{
add(p[i-1],p[i]);
}
for (int i = 1; i <= n; i++)
{
——————————————————
——————————————————
}
cout << ans;
return 0;
}
输入
第一行两个整数n和m。(1≤n,m≤1000)
第二行m个整数,分别表示p1,p2,p3...pm。
接下来n-1行,表示第i条路的ai,bi,ci。(0≤ai,bi,ci≤1000,bi<ai)
输出
一个整数,表示最少花费。
样例输入
3 5
1 2 1 2 3
3 0 2
1 1 1
样例输出
3