杨立国了, 交上去全WA(T_T)
查看原帖
杨立国了, 交上去全WA(T_T)
947873
RedWen_shuo楼主2024/8/18 10:13
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
template<typename T>void re(T&x){
	x = 0; int sign = 1; char c;
	do{c = getchar(); if (c == '-') sign = -1;}while(!isdigit(c));
	do{x = x * 10 + c - '0'; c = getchar();}while(isdigit(c));
	x *= sign;
}
const int N = 3e6 + 1000;

ll n, m, q;
ll t[N];
ll f[400][400], v[400][400];
signed main(){
	re(n), re(m);
	memset(f, 0x3f, sizeof f);
	for (int i = 0; i < n; i ++) re(t[i]);
	for (int i = 1, x, y, w; i <= m; i ++){
		re(x), re(y), re(w);
		f[x][y] = f[y][x] = w;
	}
	re(q);
	int k = 0, x, y, tim;
	while (q --){
		re(x), re(y), re(tim);
		for (k; k < tim; k ++){
			for (int i = 0; i < n; i ++){
				for (int j = 0; j < n; j ++){
					f[i][j] = min(f[i][j], f[k][j] + f[i][k]);
				}
			}
		}
		k = tim;
		if (t[x] > tim || t[y] > tim){puts("-1");}
		else {
			if(f[x][y] == 0x3f3f3f3f3f3f3f3f) puts("-1");
			else printf("%lld\n", f[x][y]);
		}
	}
	return 0;
}
2024/8/18 10:13
加载中...