0分求助
  • 板块P1119 灾后重建
  • 楼主o1__1o
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/1/27 17:52
  • 上次更新2025/1/27 22:56:19
查看原帖
0分求助
1260275
o1__1o楼主2025/1/27 17:52

样例输出:1 0 0 0

#include<bits/stdc++.h>
using namespace std;
const int N=205;
int n,m,t[N],q,u,v,w,d[N][N],x,y,z,p=1;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++)	cin>>t[i];
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(i==j){
				d[i][j]=0;
			}else{
				d[i][j]=INT_MAX/3*2;
			}
		}
	}
	for(int i=1;i<=m;i++){
		cin>>u>>v>>w;
		d[u][v]=d[v][u]=w;
	}
	cin>>q;
	for(int i=1;i<=q;i++){
		cin>>x>>y>>z;
		while(t[p]<=z&&p<=n){
			for(int j=1;j<=n;j++){
				for(int k=1;k<=n;k++){
					d[k][j]=d[j][k]=min(d[k][j],d[j][p]+d[k][p]);
				}
			}
			p++;
		}
		if(t[x]>z||t[y]>z){
			cout<<-1;
		}else{
			if(d[x][y]==INT_MAX){
				cout<<-1;
			}else{
				cout<<d[x][y];
			}
		}
		cout<<endl;
	}
    return 0;
}
2025/1/27 17:52
加载中...