不对啊!!求教
查看原帖
不对啊!!求教
679182
zhaosihang83楼主2024/5/25 10:21
#include <bits/stdc++.h>
using namespace std;
const int N = 310;
int m,n,f[N][N],a[N],b[N][N];
void floyed(int k){
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=n;j++){
			f[i][j] = min(f[i][k]+f[k][j],f[i][j]);
		}
	}
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i = 1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	for(int i = 1;i<=n;i++){
		for(int j = 1;j<=n;j++)f[i][j] = 1e9;
	}
	for(int i = 1;i<=n;i++){
		f[i][i] = 0;
	}
	int x,y,z;
	for(int i = 1;i<=m;i++){
		scanf("%d%d%d",&x,&y,&z);
		f[x][y] = z;
		f[y][x] = z;
	}
	int q,now = 0;
	cin>>q;
	while(q--){
		scanf("%d%d%d",&x,&y,&z);
		while(a[now]<=z&&now<n){
			floyed(now);
			now++;
		}
		if(a[x]>z||a[y]>z)cout<<-1<<endl;
		else if(f[x][y]==1e9)cout<<-1<<endl;
		else cout<<f[x][y]<<endl;
	}
	
	return 0;
}
2024/5/25 10:21
加载中...