这题这么写为什么不会超时?
查看原帖
这题这么写为什么不会超时?
280667
Stamford_Bridge楼主2022/7/30 11:27

如题

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int n, m, q;
int t[205];
int g[205][205];
int f[205][205];
int timer;
int cnt;

int main() {
	cin >> n >> m;
	for (int i = 0; i < n; i++) {
		cin >> t[i];
	}
	memset(f, 0x3f, sizeof(f));
	for (int i = 0; i < n; i++) {
		f[i][i] = 0;
	}
	while (m--) {
		int x, y, w;
		cin >> x >> y >> w;
		f[x][y] = f[y][x] = w;
	}
	cin >> q;
	while (q--) {
		int x, y, tim;
		cin >> x >> y >> tim;
		while (t[cnt] <= tim && cnt < n) {
			for (int i = 0; i < n; i++) {
				for (int j = 0; j < n; j++) {
					f[i][j] = min(f[i][j], f[i][cnt] + f[cnt][j]);
				}
			}
			cnt++;
		}
		if (t[x] > tim || t[y] > tim || f[x][y] == 0x3f3f3f3f) cout << -1 << endl;
		else cout << f[x][y] << endl;
	}
	return 0;
}
2022/7/30 11:27
加载中...