题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544
solution:造一个dijstra模板题
#include <bits/stdc++.h>
using namespace std;
bool book[110];
int n, graph[110][110], dis[110];
void dijkstra()
{
dis[1] = 0;
while (true){
int v = -1, i;
for (i = 1; i <= n; ++i)if (!book[i] && (v == -1 || dis[v] > dis[i]))v = i;
if (v == -1)break;
book[v] = true;
for (i = 1; i <= n; ++i)dis[i] = min(dis[i], dis[v] + graph[v][i]);
}
}
int main()
{
int m, a, b, c;
while (cin >> n >> m){
if (!n && !m)return 0;
memset(book,0,sizeof(book));
memset(graph,0x3f,sizeof(graph));
memset(dis,0x3f,sizeof(dis));
while (m--){
scanf("%d%d%d", &a, &b, &c);
graph[a][b] = graph[b][a] = c;
}
dijkstra();
printf("%d\n", dis[n]);
}
}