一道简单的弗洛伊德算法题目
  • 板块学术版
  • 楼主魏老师
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/10/19 18:08
  • 上次更新2024/10/19 20:13:34
查看原帖
一道简单的弗洛伊德算法题目
285961
魏老师楼主2024/10/19 18:08

不知道为什么输出的是0.00,请指教

//最短路径算法
#include<bits/stdc++.h>
using namespace std;
struct Q{
	int x;
	int y;
};
Q n1[110];
int main() 
{
	int n,m; 
	double m1[110][110];
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>n1[i].x>>n1[i].y;
	}
	cin>>m;
	memset(m1,0x3f,sizeof(m1));
	for(int j=1;j<=m;j++)
	{
		int x1,x2;
		cin>>x1>>x2;
		m1[x1][x2]=sqrt(pow(double(n1[x1].x-n1[x2].x),2)+pow(double(n1[x1].y-n1[x2].y),2));
		m1[x2][x1]=sqrt(pow(double(n1[x1].x-n1[x2].x),2)+pow(double(n1[x1].y-n1[x2].y),2));
	} 
			
	int s,t;
	cin>>s>>t;
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
			{
				if((i!=k)&&(i!=j)&&(k!=j)&&m1[i][j]>m1[i][k]+m1[k][j]) m1[i][j]=m1[i][k]+m1[k][j];
			}
	printf("%0.2lf",m1[s][t]);
	return 0;
}
2024/10/19 18:08
加载中...