hdu 2544
Posted 梦中。。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu 2544相关的知识,希望对你有一定的参考价值。
#include <iostream> #include <cstdio> #include <cstring> #include <queue> #include <stack> #include <list> using namespace std; const int maxn = 110; const int oo = 1e9; int Map[maxn][maxn]; void Init(int n) { for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(i==j) Map[i][j] = 0; else Map[i][j] = oo; } } } int dist[maxn]; int visit[maxn]; int dij(int n) { for(int i=1; i<=n; i++) { dist[i] = Map[1][i]; visit[i] = 0; } visit[1] = 1; for(int i=1; i<=n; i++) { int Min = oo; int index; for(int j=1; j<=n; j++) { if(!visit[j]&&dist[j]<Min) { Min = dist[j]; index = j; } } visit[index] = 1; for(int j=1; j<=n; j++) { if(!visit[j]&&dist[j]>Min+Map[index][j]) { dist[j] = Min+Map[index][j]; } } } return dist[n]; } int main() { int n, m; while(scanf("%d%d",&n,&m), n+m) { Init(n); int a,b,c; for(int i=1; i<=m; i++) { scanf("%d %d %d",&a, &b, &c); Map[a][b] = c; Map[b][a] = c; } int ans = dij(n); printf("%d\n", ans); } return 0; }
#include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <map> using namespace std; const int oo = 1e9; const int maxn = 110; int Map[maxn][maxn]; void Init(int n) { for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(i!=j) Map[i][j] = oo; else Map[i][j] = 0; } } } int main() { int n, m; while(scanf("%d%d", &n, &m),m+n) { int a,b,c; Init(n); for(int i=1; i<=m; i++) { scanf("%d%d%d",&a,&b,&c); Map[a][b] = c; Map[b][a] = c; } for(int k=1; k<=n; k++) { for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { if(Map[i][k]+Map[k][j]<Map[i][j]) { Map[i][j] = Map[i][k] + Map[k][j]; } } } } printf("%d\n", Map[1][n]); } return 0; }
以上是关于hdu 2544的主要内容,如果未能解决你的问题,请参考以下文章