题目:租用游艇
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<vector>
#include<map>
#include<algorithm>
#include<sstream>
#include<queue>
#include<set>
using namespace std;int n;
int a[205][205]= {0};
int dis[205]= {0};void init() {for(int i=1; i<n; i++) {for(int j=i+1; j<=n; j++) {int x;scanf("%d",&x);a[i][j]=x;}}
}void dijkstra() {bool use[205]= {0};int t=n-1;memset(dis,127,sizeof(dis));dis[1]=0;while(t--) {int m=(1<<30),k=-1;for(int i=1; i<=n; i++) {if(!use[i]&&dis[i]<m) {m=dis[i],k=i;}}use[k]=true;for(int i=1; i<=n; i++) {if(!use[i]&&a[k][i]) {dis[i]=min(dis[i],a[k][i]+dis[k]);}}}
}int main() {scanf("%d",&n);init();dijkstra();printf("%d\n",dis[n]);return 0;
}