算法1
看数据范围跑一遍 floyd ,最后两点依次找最大值即可。
参考文献
C++ 代码
#include<bits/stdc++.h>
using namespace std;
int d[101][101];
int main()
{
memset(d,0x3f,sizeof(d));
int n;
cin>>n;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)cin>>d[i][j];
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
int ma=0;
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)ma=max(ma,d[i][j]);
cout<<ma;
}