求调代码
  • 板块灌水区
  • 楼主Davidben
  • 当前回复4
  • 已保存回复4
  • 发布时间2022/10/13 19:18
  • 上次更新2023/10/27 07:40:03
查看原帖
求调代码
484468
Davidben楼主2022/10/13 19:18

题目传送门

对着tj思路和自己的想法敲的,调了半天都没有用,求DALAO

#include<bits/stdc++.h>
using namespace std;
const int qwq = 1e6 + 10;
int a[300][300];
int t[qwq];
int n,m;
void floyd(int k) {
	for(int i = 0; i < n; i++) {
		for(int j = 0; j < n; j++) {
			if(a[i][j] > a[i][k] + a[j][k]) {
				a[i][j] = a[j][i] = a[i][k] + a[j][k];
			}
		}
	}
	return ;
}
int main() {
	cin>>n>>m;
	for(int i = 0; i < n; i++) {
		scanf("%d",t+i);
	}
	for(int i = 0; i < n; i++) {
		for(int j = 0; j < n; j++) {
			a[i][j] = 1e9;
		}
	}
	for(int i = 0; i < n; i++) {
		a[i][i] = 0;
	}
	for(int i = 1; i <= m; i++) {
		int x,y,z;
		scanf("%d%d%d",&x,&y,&z);
		a[y][x] = a[x][y] = z;
	}
	int q;
	cin>>q;
	int qow = 0;
	for(int i = 1; i <= q; i++) {
		int x,y,sj;
		scanf("%d%d%d",&x,&y,&sj);
		while(t[qow] <= sj && qow < n) {
			floyd(qow);
			qow++;
		}
		if(t[x] > sj || t[y] > sj) {
			cout<<-1;
		} else {
			if(a[x][y] == 1e9) {
				cout<<-1<<endl;
			} else {
				cout<<a[x][y]<<endl;
			}
		}
	}
	return 0;
}

2022/10/13 19:18
加载中...