Title Link: http://acm.hdu.edu.cn/showproblem.php?pid=1874
Dijkstra algorithm template Problem 1A
#include <iostream> #include <string> #include <cstdio> #include <cstring> #include <map> #include <queue> #include <cmath> #include <stack> #include <set> #include <vector># Include<algorithm> #define LL Long long#define inf 1<<29#define s (a) scanf ("%d", &a) #define CL (A, B) memset (A,b,sizeof (a)) using namespace Std;const int n=205;int n,m,a,b,c;int map[n][n];int dist[n];bool vis[n];void Dijkstra () {CL (vis,false); for (int i=1;i<=n;i++) dist[i]=map[a][i]; Vis[a]=true; while (1) {int v=-1; for (int u=1;u<=n;u++) {if (!vis[u]&& (v==-1| | DIST[U]<DIST[V]) V=u; } if (v==-1) break; Vis[v]=true; for (int u=1;u<=n;u++) {dist[u]=min (dist[u],dist[v]+map[v][u]); }}}int Main () {int t; while (~SCANF ("%d%d", &n,&m)) {n++; for (int i=1;i<=n;i++) {for (int j=1;j<=n;j++) Map[i][j]=inf; Map[i][i]=0; } for (int i=0;i<m;i++) {scanf ("%d%d%d", &a,&b,&c); a++;b++; if (map[a][b]>c) map[a][b]=map[b][a]=c; } scanf ("%d%d", &a,&b); a++;b++; Dijkstra (); if (dist[b]==inf) printf (" -1\n"); else printf ("%d\n", Dist[b]); } return 0;}
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
Hdu1874-unblocked project continued-Shortest Way (Dijkstra)