洛谷P1359 租用游艇 题解

本题做法

  • Floyd 弗洛伊德最短路算法。

思路

求全源最短路,再输出 \(g[1]][n]\) 即可。

代码

#include<bits/stdc++.h>

using namespace std;

const int INF=0x7fffffff;
const double EPS=1e-8;
const int N=205;

int n,e[N][N];

int main(){
	memset(e,INF,sizeof(e));
	cin>>n;
	for(int i=1;i<=n;i++){
		e[i][i]=0;
		for(int j=1;j<i;j++) e[i][j]=-1; 
		for(int j=i+1;j<=n;j++){
			int x;
			cin>>e[i][j];
		}
	} 
	for(int k=1;k<=n;k++){
		for(int i=1;i<=n;i++){
			for(int j=1;j<=n;j++){
				if(e[i][k]==-1||e[k][j]==-1) continue;
				if(e[i][j]>e[i][k]+e[k][j]||e[i][j]==-1) e[i][j]=e[i][k]+e[k][j];
			}
		}
	}
	cout<<e[1][n];
	return 0;
}
posted @ 2025-05-11 21:13  2789617221guo  阅读(14)  评论(0)    收藏  举报