全WA求助
查看原帖
全WA求助
506322
芥川龙之介楼主2021/9/11 17:37

看了遍题解打的

实在找不出错了

求助

#include<bits/stdc++.h>
using namespace std;

int f[1000][1000];
void sum(int k)
{
	for(int i=1;i<=k;i++)
	for(int j=1;j<=k;j++)
	{
		if(f[i][j]>f[i][k]+f[k][j])
		f[i][j]=f[j][i]=f[i][k]+f[k][j];
		return;
	}
}
int main()
{
	int n,m;
	cin>>n>>m;
	int a[n];
	for(int i=1;i<=n;i++)
	cin>>a[i];
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	{
		f[i][j]=999999999999;
	}
	for(int i=1;i<=n;i++)
	f[i][i]=0;
	int s1,s2,s3;
	for(int i=1;i<=m;i++)
	{
		cin>>s1>>s2>>s3;
		f[s1][s2]=f[s2][s1]=s3;
	}
	int q;
	cin>>q;
	int t=0;
	for(int i=1;i<=q;i++)
	{
		cin>>s1>>s2>>s3;
		while(a[t]<=s3&&t<n)
		{
			sum(t);
			t++;
		}
		if(a[s1]>s3||a[s2]>s3)cout<<"-1"<<endl;
		else
		{
			if(f[s1][s2]==999999999999)cout<<"-1"<<endl;
			else
			{
				cout<<f[s1][s2]<<endl;
			}
		}
	}
	return 0;
}
2021/9/11 17:37
加载中...