刚学oi求助
查看原帖
刚学oi求助
238419
Phoenix_chaser楼主2020/11/13 20:17

本题用得floyed,但只过了样例,提交全wa,实在是调不出来了,麻烦大佬们给看一下,谢谢

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,m,a[220],d[121][113],d2[131][131],q,ji=1;
int main(){
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++)
	{scanf("%d",&a[i]);
	}
	memset(d,0x7f,sizeof(d));
	for(int i=0;i<n;i++)
	d[i][i]=0;
	for(int i=1;i<=m;i++)
	{
	 	int x,y,z;
	 	scanf("%d%d%d",&x,&y,&z);
	 	d[x][y]=z;
	 	d[y][x]=z;
	}
	scanf("%d",&q);
	for(int i=1;i<=q;i++)
	{	int a1,b,c;
		scanf("%d%d%d",&a1,&b,&c);
		while(a[ji]<=c)
		{
			
			for(int i=0;i<n;i++)
			for(int j=0;j<n;j++)
			if(d[i][j]>d[i][ji]+d[ji][j])
			d[i][j]=d[j][i]=d[i][ji]+d[ji][j];
			ji++;		
			if(ji>=n) break;
		}
		if(a[a1]<=c&&a[b]<=c&&d[a1][b]!=0x7f7f7f7f)
		printf("%d\n",d[a1][b]);
		else printf("-1\n");
 }
	
	return 0;
}
2020/11/13 20:17
加载中...