大红大紫TLE 玄关求助!
查看原帖
大红大紫TLE 玄关求助!
1195678
wky2011楼主2024/10/3 12:20
#include<bits/stdc++.h>
#define int long long
#define ll long long
#define re read()
using namespace std;
const int N=3e5+5;
const int NN=3e3+5;
inline ll read(){
    ll x=0,f=1;char ch=getchar();
    while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}
    while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}
    return x*f;
}
int q[205],k;
int c[205];
int d[3005][3005];
signed main(){
	ios::sync_with_stdio(false);
	   int n=re,m=re;
	   memset(d,0x3f,sizeof(d));
	   memset(c,0x3f,sizeof(c));
	   for(int i=0;i<n;i++){
	   	d[i][i]=0;
	   		   cin>>c[i];
	   }
	   for(int i=1;i<=m;i++){
	   		   int u=re,v=re,w=re;
	   		   d[u][v]=d[v][u]=w;
	   }
	  
int qq=re;
for(int l=1;l<=qq;l++) {
int x=re,y=re,t=re;
while(c[k]<=t)
          {
              for(int i=0;i<n;i++)
               for(int j=0;j<n;j++)
                d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
                k++;
          }
         
        if(d[x][y]==1061109567||c[x]>t||c[y]>t) printf("-1\n");
        else printf("%d\n",d[x][y]);
     }
	 return 0;}
2024/10/3 12:20
加载中...