[ An Ac a Day ^_^ ] [kuangbin带你飞]专题四 最短路练习 POJ 2387 Til the Cows Come Home

Posted 可是我不配

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[ An Ac a Day ^_^ ] [kuangbin带你飞]专题四 最短路练习 POJ 2387 Til the Cows Come Home相关的知识,希望对你有一定的参考价值。

求1到N的最短路

注意有重边 跑一遍dijkstra就行

 1 /* ***********************************************
 2 Author        :SunYuefeng
 3 Created Time  :2016/10/22 14:18:06
 4 File Name     :A.cpp
 5 ************************************************ */
 6 
 7 #include<cstdio>
 8 #include<iostream>
 9 #include<algorithm>
10 #include<cmath>
11 #include<cstring>
12 #include<string>
13 #include<bitset>
14 #include<map>
15 #include<set>
16 #include<stack>
17 #include<vector>
18 #include<queue>
19 #include<list>
20 #define M(a,b) memset(a,b,sizeof(a))
21 using namespace std;
22 typedef long long ll;
23 const int inf=0x3f3f3f3f;
24 const int maxn=1e3+10;
25 const int mod=1e7+7;
26 int dx[8]= {0,0,1,-1,1,-1,1,-1};
27 int dy[8]= {1,-1,0,0,-1,1,1,-1};
28 
29 int n,m;
30 int way[maxn][maxn];
31 int dis[maxn];
32 bool vis[maxn];
33 
34 void dijkstra(int x){
35     for(int i=1;i<=m;i++){
36         dis[i]=inf;
37         vis[i]=false;
38     }
39     dis[x]=0;
40     for(int i=1;i<=m;i++){
41         int k=-1;
42         int min=inf;
43         for(int j=1;j<=m;j++){
44             if(!vis[j]&&dis[j]<min){
45                 min=dis[j];
46                 k=j;
47             }
48         }
49         if(k==-1) break;
50         vis[k]=true;
51         for(int j=1;j<=m;j++){
52             if(!vis[j]&&dis[j]>dis[k]+way[j][k]){
53                 dis[j]=dis[k]+way[j][k];
54             }
55         }
56     }
57 }
58 
59 int main()
60 {
61     //freopen("in.txt","r",stdin);
62     //freopen("out.txt","w",stdout);
63     while(~scanf("%d%d",&n,&m)){
64         int a,b,v;
65         M(way,inf);
66         for(int i=0;i<n;i++){
67             scanf("%d%d%d",&a,&b,&v);
68             if(way[a][b]>v){
69                 way[a][b]=v;
70                 way[b][a]=v;
71             }
72         }
73         dijkstra(1);
74         int min=inf;
75         printf("%d\n",dis[m]);
76     }
77     return 0;
78 }

 

以上是关于[ An Ac a Day ^_^ ] [kuangbin带你飞]专题四 最短路练习 POJ 2387 Til the Cows Come Home的主要内容,如果未能解决你的问题,请参考以下文章

[ An Ac a Day ^_^ ] hdu 1662 数据结构 二叉树

[ An Ac a Day ^_^ ] HDU 1257 基础dp 最长上升子序列

[ An Ac a Day ^_^ ] hdu 5925 Coconuts 离散化+BFS求连通块

[ An Ac a Day ^_^ ] POJ 3254 Corn Fields 状压dp

[ An Ac a Day ^_^ ] HihoCoder 1249 Xiongnu's Land 线性扫描

[ An Ac a Day ^_^ ] [kuangbin带你飞]专题四 最短路练习 POJ 2387 Til the Cows Come Home