求改
查看原帖
求改
1163381
s155555x楼主2024/7/30 17:39
#include <bits/stdc++.h>
using namespace std;
int n,m,q,a[205],f[205][205],x,y,t;
void aaa(int k){
	for(int i=0;i<n;i++)
	    for(int j=0;j<n;j++)
	        if(f[i][k]+f[k][j]<f[i][j])
	                f[i][j]=f[j][i]=f[i][k]+f[k][j];
	return;
}
int main(){
    cin>>n>>m;
    for(int i=0;i<n;i++)
	    scanf("%d",a+i);
	for(int i=0;i<n;i++)
	for(int j=0;j<n;j++){
		f[i][j]=1e9;
	}
	int s1,s2,s3;
	for(int i=0;i<m;i++){
		cin>>s1>>s2>>s3;
		f[s1][s2]=f[s2][s1]=s3;
	}
    cin>>q;
    for(int i=1;i<=q;i++){
    	int step=0;
    	cin>>x>>y>>t;
    	while(a[step]<=t&&step<n){
    		aaa(step);
    		step++;
		}
		if(a[x]>t||a[y]>t) cout<<-1<<endl;
		else{
			if(f[x][y]==1e9) cout<<-1<<endl;
			else cout<<f[x][y]<<endl;
		}
	}
	return 0;
}

2024/7/30 17:39
加载中...