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

kuangbin专题专题四 MPI Maelstrom POJ - 1502

kuangbin专题七 ZOJ1610 Count the Colors (灵活线段树)