kuangbin专题专题四 Til the Cows Come Home POJ - 2387
Posted ssummerzzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kuangbin专题专题四 Til the Cows Come Home POJ - 2387相关的知识,希望对你有一定的参考价值。
题目链接: https://vjudge.net/problem/POJ-2387
题意:从编号为n的城市到编号为1的城市的最短路。
思路:dijkstra模板题,直接套板子,代码中我会带点注释给初学者看。
1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <cstdio> 5 #include <string> 6 using namespace std; 7 8 typedef long long LL; 9 #define inf (1LL << 30) - 1 10 #define rep(i,j,k) for(int i = (j); i <= (k); i++) 11 #define rep__(i,j,k) for(int i = (j); i < (k); i++) 12 #define per(i,j,k) for(int i = (j); i >= (k); i--) 13 #define per__(i,j,k) for(int i = (j); i > (k); i--) 14 15 const int N = 1100; 16 bool vis[N]; //是否访问过 17 int mp[N][N]; 18 int dis[N]; //到不同城市的距离 19 int t,n; 20 21 void init() 22 memset(vis,0,sizeof(vis)); 23 rep(i,1,n) rep(j,1,n) 24 if(i == j) mp[i][j] = 0; 25 else mp[i][j] = inf; 26 27 28 29 void input() 30 31 int u,v,w; 32 rep(i,1,t) 33 cin >> u >> v >> w; 34 if(mp[u][v] > w) mp[u][v] = mp[v][u] = w; 35 36 37 38 39 void dijkstra() 40 41 rep(i,1,n) dis[i] = mp[n][i]; //n到其他城市的距离 42 vis[n] = true; //标记n城市任务完成 43 44 rep(i,2,n) //接下来 n-1个城市的操作 45 46 int x = -1; 47 int c = inf; 48 49 rep(j,1,n) 50 //该城市未被访问过 选出当前到每个点的最小值,并得到坐标 51 if(!vis[j] && c > dis[j]) x = j, c = dis[j]; 52 53 if(x == -1) continue; //没找到一个,即该城市无法到达其他未被访问的城市 54 55 vis[x] = true; //标记这个当前这个离起始点最短距离的城市 56 rep(p,1,n) 57 58 //起始点到p城市的所有距离之和 大于 起始点到x点的所有距离之后 加上 x点到p点的距离 59 if(!vis[p] && dis[x] + mp[x][p] < dis[p]) 60 dis[p] = dis[x] + mp[x][p]; 61 62 63 64 65 //到达点1城市的最短距离 66 cout << dis[1] << endl; 67 68 69 int main() 70 71 72 ios::sync_with_stdio(false); 73 cin.tie(0); 74 75 cin >> t >> n; 76 77 init(); //初始化 78 input(); //输入 79 dijkstra(); //最短路 80 81 getchar();getchar(); 82 83 return 0; 84
以上是关于kuangbin专题专题四 Til the Cows Come Home POJ - 2387的主要内容,如果未能解决你的问题,请参考以下文章
算法系列学习Dijkstra单源最短路 [kuangbin带你飞]专题四 最短路练习 A - Til the Cows Come Home
Catch That Cow POJ - 3278 [kuangbin带你飞]专题一 简单搜索
kuangbin专题五:B - The Suspects POJ - 1611
kuangbin专题四 : 最短路 I 题 Arbitrage