#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 1e3 + 7;
int d, dis[N], used[N];
int co[N][N], dp[N];
int n, m, k, e, cl[N][N];
int g[N][N], sum[N][N];
queue<int> q;
void spfa(int l, int r) {
while (!q.empty()) q.pop();
memset(dis, 0x7f, sizeof(dis));
memset(used, 0 ,sizeof(used));
q.push(1);
dis[1] = 0;
used[1] = 1;
while (!q.empty()) {
int u = q.front();
q.pop();
used[u] = 0;
for (int v = 1; v <= m; v++) {
if (g[u][v] == -1) continue;
if (sum[v][r] - sum[v][l - 1] != 0) continue;
if (dis[v] > dis[u] + g[u][v]) {
dis[v] = dis[u] + g[u][v];
if (used[v] == 0) {
used[v] = 1;
q.push(v);
}
}
}
}
return ;
}
signed main() {
memset(g, -1, sizeof(g));
cin >> n >> m >> k >> e;
for (int i = 1; i <= e; i++) {
int x, y, z;
cin >> x >> y >> z;
if (g[x][y] == -1 || g[x][y] < z) g[x][y] = z, g[y][x] = z;
}
cin >> d;
for (int i = 1; i <= d; i++) {
int t, x, y;
cin >> t >> x >> y;
for (int j = x; j <= y; j++) cl[t][j] = 1;
}
memset(sum, 0, sizeof(sum));
for (int i = 1; i <= m; i++){
for (int j = 1; j <= n; j++) {
sum[i][j] = sum[i][j - 1] + cl[i][j];
}
}
for (int i = 1; i <= n; i++) {
for (int j = i; j <= n; j++) {
spfa(i, j);
co[i][j] = dis[m];
}
}
memset(dp, 0x7f, sizeof(dp));
for (int i = 1; i <= n; i++) {
dp[i] = co[1][i] * i;
for (int j = i - 1; j >= 0; j--) {
dp[i] = min(dp[i], dp[j] + co[j + 1][i] * (i - j) + k);
}
}
cout << dp[n];
return 0;
}
请指出哪一行错了,谢谢