TLE求救
  • 板块P1119 灾后重建
  • 楼主__why
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/22 21:09
  • 上次更新2024/3/22 23:22:17
查看原帖
TLE求救
768270
__why楼主2024/3/22 21:09

已经特殊判断了是否需要最短路 但是还是TLE40分

记录

#include<bits/stdc++.h>
using namespace std;
const int maxn = 205;
int n,m,q,t[maxn],l[maxn][maxn];
int main(){
	cin>>n>>m;
	for(int i = 0;i<n;i++){
		cin>>t[i];
	}
	for(int i = 0;i<n;i++){
		for(int j = 0;j<n;j++){
			l[i][j] = 1e9;
		}
	}
	for(int i = 0;i<n;i++)l[i][i] = 0;
	for(int i = 1,x,y,z;i<=m;i++){
		cin>>x>>y>>z;
		l[x][y] = l[y][x] = z;
	}
	cin>>q;
	for(int i = 1,x,y,ti,cnt;i<=q;i++){
		cin>>x>>y>>ti;
		if(t[x]>ti||t[y]>ti){
			cout<<-1<<endl;
		}else{
			cnt = 0;
			while(cnt<n&&t[cnt]<=ti){
				for(int x = 0;x<n;x++){
					for(int y = 0;y<n;y++){
						l[y][x] = l[x][y] = min(l[x][y],l[x][cnt]+l[cnt][y]);
					}
				}
				cnt++;
			}
			if(l[x][y]==1e9)cout<<-1<<endl;
			else{
				cout<<l[x][y]<<endl;
			}
		}
	}
	return 0;
}
2024/3/22 21:09
加载中...