萌新求助!!!Floyd0分!!!!!
  • 板块P1119 灾后重建
  • 楼主Frodo
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/7/25 14:51
  • 上次更新2023/10/27 18:30:28
查看原帖
萌新求助!!!Floyd0分!!!!!
677514
Frodo楼主2022/7/25 14:51

Code: (输出全 -1

#include<bits/stdc++.h>
using namespace std;
#define LL long long
const LL N=201,inf=2147483647;
LL n,m,q,x,y,w,t[N],mp[N][N],cnt;
bool v[N];
LL read()
{
 LL ret=0;
 char ch=getchar();
 while(ch<'0'||ch>'9') ch=getchar();
 while(ch>='0'&&ch<='9'){ret=ret*10+(ch-48);ch=getchar();}
 return ret;
}
void update(int k)
{
 for(int i=1;i<=n;i++)
 {
  for(int j=1;j<=n;j++)
  {
   if(mp[i][j]>mp[i][k]+mp[k][j]) mp[i][j]=mp[j][i]=mp[i][k]+mp[k][j];
  }
 }
}
int main()
{
 n=read();m=read();
 for(LL i=1;i<=n;i++) t[i]=read();
 for(LL i=1;i<=n;i++)
 {
  for(LL j=1;j<=n;j++)
  {
   if(i!=j) mp[i][j]=inf;
   else mp[i][i]=0;
  }
 }
 for(LL i=1;i<=m;i++)
 {
  x=read();y=read();w=read();
  mp[x][y]=mp[y][x]=w;
 }
 q=read();
 while(q--)
 {
  x=read();y=read();w=read();cnt=0;
  while(t[cnt]<=w&&cnt<n){update(cnt);cnt++;}
  if(t[x]>w||t[y]>w) printf("-1\n");
  else
  {
   if(mp[x][y]=inf) printf("-1\n");
   else printf("%d\n",mp[x][y]);
  }
 }
 return 0;
}
2022/7/25 14:51
加载中...