你试着询问完就输出,还有把数组开大试试?
by Y_QWQ_Y @ 2023-12-21 20:00:19
@[XMqing](/user/1019048) 不知道为什么,我的代码跟你的差不多,为啥我的关掉o2也可以?你看看
```cpp
#include <bits/stdc++.h>
#define int long long
using namespace std;
int f[2005][2005], n, m, t[2005], k, q;
void floyd (int k){for (int i = 0; i < n; ++ i)for (int j = 0; j < n; ++ j)f[i][j] = min (f[i][j], f[i][k] + f[k][j]);}
signed main ()
{
memset (f, 0x3f, sizeof (f));
cin >> n >> m;
for (int i = 0; i < n; ++ i)
{
f[i][i] = 0;
cin >> t[i];
}
for (int i = 0; i < m; ++ i)
{
int x, y, tt;
cin >> x >> y >> tt;
f[x][y] = f[y][x] = tt;
}
cin >> q;
++ q;
while (-- q)
{
int x, y, tt;
cin >> x >> y >> tt;
while (tt >= t[k])floyd (k ++);
if (tt < t[x] || tt < t[y] || f[x][y] >= 1e9)puts ("-1");
else printf ("%d\n", f[x][y]);
}
return 0;
}
```
by Y_QWQ_Y @ 2023-12-21 20:06:14
@[XMqing](/user/1019048) 没有return 0;
by Anythingispossible @ 2023-12-28 20:10:54