题目大意:

散布谣言!给一个图,正权有向。问从哪个点开始到各个点的距离中最大的距离最短,是多少 。

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算法,核心的五行代码也可以理解成是,枚举每一组可能的三个点的组合,即枚举每一个三角形(也有可能无法构成),判断是否可以通过其他两边使第三条边缩短。