弗洛伊德算法 66分求助
查看原帖
弗洛伊德算法 66分求助
1108111
XYY62012楼主2024/7/2 15:49

有大佬看得出来哪里有问题吗AOA

#include<bits/stdc++.h>
using namespace std;
int n,d[506][506];
void st(){
	for(int i=1;i<=n;i++) {
		for(int j=1;j<=n;j++){
		//赋初始值,自己到自己租金为0 
			if(i==j) d[i][j]=0;
		}
	}
}
void floyed(){//弗洛伊德算法 
	for(int k=1;k<=n;k++){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				if(d[i][k]+d[k][j]<d[i][j])
					d[i][j]=d[i][k]+d[k][j];
			}
		}
	}
}
int main(){
	int x;
	cin>>n;
	for(int i=1;i<=n;i++){
		for(int j=i+1;j<=n;j++){
			cin>>x;
			d[i][j]=x;
			d[j][i]=x;//无向图,双向边 
		}
	}
	st();//赋初始值 
	floyed();//弗洛伊德算法 
	cout<<d[1][n]<<endl;//输出 
	return 0;
}

悬关求助AAA

2024/7/2 15:49
加载中...