hdu 1874
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 1874相关的知识,希望对你有一定的参考价值。
1 #include <bits/stdc++.h> 2 #define inf 0x3f3f3f3f 3 4 using namespace std; 5 6 int N, M; 7 int map1[205][205]; 8 int d[205]; 9 int vis[205]; 10 void dij(int start) 11 { 12 for(int i=0; i<N; i++) 13 { 14 d[i]=(i==start?0:inf); 15 } 16 for(int i=0; i<N; i++) 17 { 18 int ij=inf, u; 19 for(int j=0; j<N; j++) 20 { 21 if(!vis[j]&&d[j]<=ij) 22 { 23 ij=d[j]; 24 u=j; 25 } 26 } 27 vis[u]=1; 28 if(ij==inf) break; 29 for(int v=0; v<N; v++) 30 { 31 if(!vis[v]) 32 d[v]=min(d[v], map1[u][v]+d[u]); 33 } 34 } 35 } 36 int main() 37 { 38 while(scanf("%d %d", &N, &M)!=EOF) 39 { 40 memset(vis, 0, sizeof(vis)); 41 for(int i=0; i<N; i++) 42 { 43 for(int j=0; j<N; j++) 44 { 45 map1[i][j]=(i==j?0:inf); 46 } 47 } 48 for(int i=0; i<M; i++) 49 { 50 int x, y, z; 51 scanf("%d%d%d", &x, &y, &z); 52 if(z<map1[x][y]) 53 { 54 map1[x][y]=map1[y][x]=z; 55 } 56 } 57 int s, t; 58 scanf("%d%d", &s, &t); 59 dij(s); 60 if(d[t]==inf) printf("-1\n"); 61 else cout <<d[t] <<endl; 62 } 63 64 return 0; 65 }
以上是关于hdu 1874的主要内容,如果未能解决你的问题,请参考以下文章