1 条题解
-
0
#include <bits/stdc++.h> using namespace std; #define endl "\n" #define int long long const int MAXN = 200; const int INF = 0x3f3f3f3f3f3f3f3f; int n, m, Q; int T[MAXN + 5]; int dis[MAXN + 5][MAXN + 5]; signed main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> m; for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) dis[i][j] = INF; for (int i = 1; i <= n; i++) cin >> T[i]; for (int i = 1; i <= m; i++) { int u, v, w; cin >> u >> v >> w; u++; v++; dis[u][v] = min(dis[u][v], w); dis[v][u] = min(dis[u][v], w); } cin >> Q; int k = 1; while (Q--) { int u, v, t; cin >> u >> v >> t; u++; v++; if (t < T[u]) { cout << "-1" << endl; continue; } if (t < T[v]) { cout << "-1" << endl; continue; } for (; T[k] <= t && k <= n; k++) for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]); if (dis[u][v] == INF) cout << "-1" << endl; else cout << dis[u][v] << endl; } return 0; }
- 1
信息
- ID
- 1944
- 时间
- 1000ms
- 内存
- 125MiB
- 难度
- 4
- 标签
- 递交数
- 22
- 已通过
- 12
- 上传者