floyd 70分求调,悬赏关注
查看原帖
floyd 70分求调,悬赏关注
1048854
dlover楼主2024/7/8 09:19

前五个点WA了,好像是因为没有输出,具体我也不知道哪里错了;

#include<bits/stdc++.h>
using namespace std;
int n,a,b,k;
const int N=205;
int dp[N][N];
int main()
{
//	freopen("lift.in","r",stdin);
//	freopen("lift.out","w",stdout);
	cin>>n>>a>>b;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			dp[i][j]=0x3f3f3f3f;
		}
	}
	for(int i=1;i<=n;i++)
	{
		cin>>k;
		dp[i][i+k]=1;
		if(i-k>=1)
		{
			dp[i][i-k]=1;
		}
	}	
		for(int k=1;k<=n;k++)
		{
			for(int i=1;i<=n;i++)
			{
				for(int j=1;j<=n;j++)
				{
					if(i!=j)
					{
						dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
					}
				}
			}
		}
		if(a==b)
		cout<<"0"<<endl;
		else
		{
			if(dp[a][b]<0x3f3f3f3f)
			cout<<dp[a][b]<<endl;
			else
			cout<<"-1"<<endl;	
		}
		return 0;
} 
2024/7/8 09:19
加载中...