题目大意:
散布谣言!给一个图,正权有向。问从哪个点开始到各个点的距离中最大的距离最短,是多少 。
floyd算法
#include
#include
#include
#include
#define N 150
#define inf 0x3f3f3f
using namespace std;
int n;
int num=1;
int dis[N][N]={0};//dis[i][j]表示i传信息j需要的时间
void chushihua()
{
num=1;
for(int i=0;i>m;
while(m--)
{
int p,q;
scanf("%d%d",&p,&q);
dis[i][p]=q;
}
}
}
void my_floyd()
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int t=1;t<=n;t++)
{
if(dis[j][t]>dis[j][i]+dis[i][t])
{
dis[j][t]=dis[j][i]+dis[i][t];
}
}
}
}
}
int find()
{
int min=inf;
for(int i=1;i<=n;i++)
{
int k=0;
for(int j=1;j<=n;j++)
{
if(kk)
{
min=k;num=i;
}
}
return min;
}
int main()
{
while(cin>>n)
{
if(n==0)break;
chushihua();
input();
my_floyd();
/*for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
cout<
关于这个floyd算法,核心的五行代码也可以理解成是,枚举每一组可能的三个点的组合,即枚举每一个三角形(也有可能无法构成),判断是否可以通过其他两边使第三条边缩短。