又跟大一混题玩。。
floyd简单的应用,有一个牛,他要从A跳到B,并且是A-B之间的高度差,所以B不能跳到A,这里是一个点,然后,问你,A-B之间最短距离当中,最大的高度差是多少。只要是把题意弄明白就可以了。
#include<iostream>
#include<cstdio>
#include<string.h>
#include<string>
#include<stack>
#include<set>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#define ll __int64
#define lll unsigned long long
#define MAX 1000009
#define eps 1e-8
#define INF 0xfffffff
using namespace std;
int dp[509][509];
int main()
{
int n,m,t;
int a,b,c;
int x,y;
while(~scanf("%d%d%d",&n,&m,&t))
{
for(int i = 1; i<=n; i++)
{
for(int j = 1; j<=n; j++)
{
if(i==j)
dp[i][j] = 0;
else
dp[i][j] = INF;
}
}
for(int i = 0; i<m; i++)
{
scanf("%d%d%d",&a,&b,&c);
if(dp[a][b]>c)
{
dp[a][b] = c;
}
}
for(int k = 1; k<=n; k++)
{
for(int i = 1; i<=n; i++)
{
for(int j = 1; j<=n; j++)
{
dp[i][j] = min(dp[i][j],max(dp[i][k],dp[k][j]));
}
}
}
for(int i = 0; i<t; i++)
{
scanf("%d%d",&x,&y);
if(dp[x][y]==INF)
cout<<-1<<endl;
else
cout<<dp[x][y]<<endl;
}
}
return 0;
}
本文探讨了Floyd算法在解决跳跃高度差问题中的应用,通过实例解析如何求解A到B之间最短路径中最大的高度差。
328

被折叠的 条评论
为什么被折叠?



