P1119 TLE?这与题解有何出入?~~50pts
  • 板块学术版
  • 楼主lht1217
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/2/20 21:52
  • 上次更新2023/10/24 00:13:09
查看原帖
P1119 TLE?这与题解有何出入?~~50pts
743734
lht1217楼主2023/2/20 21:52
#include<bits/stdc++.h>
using namespace std;
int n,m,q,num,t[1001],dis[1001][1001];
int l,r;
void floyd(){
	for(int k=l;k<=r;k++)
	    for(int i=0;i<n;i++)
	        for(int j=0;j<n;j++) dis[j][i]=dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]);
}
int main(){
    cin>>n>>m;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
			dis[i][j]=1e9;
    for(int i=0;i<n;i++){
        cin>>t[i];
        dis[i][i]=0;
    }
    for(int i=1;i<=m;i++){
        int u,v,w;
        cin>>u>>v>>w;
        dis[u][v]=dis[v][u]=w;
    }
    cin>>q;
    for(int i=1;i<=q;i++){
        int x,y,T;
        cin>>x>>y>>T;
        for(int j=l;j<n&&r<n;j++){
        	if(t[j]<=T) r=j;
        	else break;
		}
		floyd();
		l=r;
        if(dis[x][y]<1e9&&t[x]<=T&&t[y]<=T) cout<<dis[x][y]<<endl;
        else cout<<-1<<endl;
    }
    return 0;
}
2023/2/20 21:52
加载中...