flyod全是-1,没有正确更新求调
  • 板块P1119 灾后重建
  • 楼主RY111
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/8/4 18:26
  • 上次更新2024/8/4 19:49:47
查看原帖
flyod全是-1,没有正确更新求调
1233392
RY111楼主2024/8/4 18:26
#include<bits/stdc++.h>
using namespace std;
int n,m;
int g[210][210];
int te[210];

int floyd(int x,int y,int t)
{
	int g1[210][210];
	memset(g1,0x3f,sizeof g1);
	for(int i=1; i<=n; i++)
	{
		for(int j=1; j<=n; j++)
		{
			if(i==j)
				g1[i][j]=g1[j][i]=0;
			if(te[i]<=t&&te[j]<=t)

			{
				g1[i][j]=g1[i][j]=g1[j][i]=g1[j][i];
//	cout<<g[i][j]<<endl;

			}


		}
	
	}
//	int dist[210][210];
//	memset(dist,0x3f,sizeof dist);
	for(int k=1; k<=n; k++)\
	{
		for(int j=1; j<=n; j++)
		{
			for(int i=1; i<=n; i++)
				g1[i][j]=min(g1[i][j],g1[j][k]+g1[k][i]);
			
		}
	}

	return g1[x][y];
}
int main()
{
	cin>>n>>m;
	for(int i=1; i<=n; i++)
	{
		int x;
		cin>>x;
		te[i]=x;
	}
	while(m--)
	{
		int i,j,w;
		cin>>i>>j>>w;
		g[i][j]=g[j][i]=w;
	}
	int q;
	cin>>q;
	while(q--)
	{
		int x,y,t;
		cin>>x>>y>>t;
		if(floyd(x,y,t)>0x3f3f3f3f/2)
			cout<<"-1"<<endl;
		else
			cout<<floyd(x,y,t)<<endl;
	}


}
2024/8/4 18:26
加载中...