Ford 求调
  • 板块学术版
  • 楼主hexuchen
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/8/31 17:03
  • 上次更新2024/8/31 20:29:40
查看原帖
Ford 求调
945742
hexuchen楼主2024/8/31 17:03

rt,题目,代码如下,主函数内的不用看,只要看 Ford 函数里的代码就好了。悬赏关注。

#include <bits/stdc++.h>
using namespace std;
int n,m,x[10001],y[10001],a[10001],b[10001],start,en;
double s[10001][10001],ans[10001];
void Bellman_Ford(){
	ans[start]=0;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=m;j++){
			int u=a[j],v=b[j];
			double w=s[v][u];
			if(ans[u]==1e9){
				continue;
			}
			if(ans[v]>ans[u]+w){
				ans[v]=ans[u]+w;
			}
		}
	}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			s[i][j]=1e9;
		}
		ans[i]=1e9;
	}
	for(int i=1;i<=n;i++){
		cin>>x[i]>>y[i];
	}
	cin>>m;
	for(int i=1;i<=m;i++){
		cin>>a[i]>>b[i];
		s[a[i]][b[i]]=s[b[i]][a[i]]=sqrt(pow(abs(x[a[i]]-x[b[i]]),2)+pow(abs(y[a[i]]-y[b[i]]),2));
	}
	cin>>start>>en;
	Bellman_Ford();
	printf("%.2lf",ans[en]);
	return 0;
}
2024/8/31 17:03
加载中...