P1359租用游艇
一、题目描述
二、解题思路
Dijkstra模板题,套模板即可。
三、代码实现
1 #include "bits/stdc++.h" 2 using namespace std; 3 const int inf = 1e9; 4 int dis[210],vis[210]; 5 int graph[210][210]; 6 int main() 7 { 8 int n; 9 cin >> n; 10 for(int i = 1;i <= n;i++) 11 for(int j = 1;j <= n;j++) 12 graph[i][j] = inf; 13 int f = 1; 14 while(f < n){ 15 int d; 16 for(int j = f + 1;j <= n;j++) { 17 cin >> d; 18 graph[f][j] = d; 19 //graph[j][f] = d;//注意是有向图,被坑了一次 20 } 21 f++; 22 } 23 vis[1] = 1; 24 for(int i = 2;i <= n;i++) 25 dis[i] = graph[1][i]; 26 for(int i = 2;i <= n;i++){ 27 int bk = inf; 28 int id = 0; 29 for(int j = 2;j <= n;j++){ 30 if(dis[j] < bk && !vis[j]){ 31 bk = dis[j]; 32 id = j; 33 } 34 } 35 vis[id] = 1; 36 for(int j = 1;j <= n;j++){ 37 if(dis[j] > graph[id][j] + bk) 38 dis[j] = graph[id][j] + bk; 39 } 40 } 41 cout << dis[n]; 42 return 0; 43 }
本文来自博客园,作者:{scanner},转载请注明原文链接:{https://home.cnblogs.com/u/scannerkk/}