50分求助
  • 板块P1119 灾后重建
  • 楼主m_m_m
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/5 20:01
  • 上次更新2024/3/5 21:38:15
查看原帖
50分求助
481729
m_m_m楼主2024/3/5 20:01
#include<bits/stdc++.h>
using namespace std;
int dis[210][210];
int t[210];
int n,m,q,now;
int main(){
	
	
	cin>>n>>m;
	
	for(int i=0;i<n;i++)
	for(int j=0;j<n;j++)
	if(i!=j)dis[i][j]=1e9;
	
	for(int i=0;i<n;i++)
	cin>>t[i];
	for(int w=1;w<=m;w++){
		int i1,j1,w1;
		cin>>i1>>j1>>w1;
		dis[i1][j1]=w1;
		dis[j1][i1]=w1;
	}
	
	cin>>q;
	
	
	for(int p=1;p<=q;p++)
	{
		int x1,y1,t1;
		cin>>x1>>y1>>t1;
		if(t[now]<=t1&&now<n){
			for(int i=0;i<n;i++){
			for(int j=0;j<n;j++){
			if(dis[i][now]+dis[now][j]<dis[i][j])
			dis[j][i]=dis[i][j]=dis[i][now]+dis[now][j];
			}}
			now++;
			
		}
		if(t[x1]>t1||t[y1]>t1)cout<<-1<<endl;
		else
		if(dis[x1][y1]==1e9)cout<<-1<<endl;
		else cout<<dis[x1][y1]<<endl;
		
	}
	
	return 0;
}
2024/3/5 20:01
加载中...