题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544

思路分析:该问题给定一个无向图,要求求从起始点到终点的最短路径长度;可以使用dijkstra算法求出该起始点到其他所有点的最短距离;

代码如下:

#include <queue>
#include <climits>
#include <cstdio>
#include <vector>
#include <utility>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <functional>
using namespace std; typedef pair<int, int> PII;
const int MAX_N = + ;
const int MAX_M = + ;
int u[MAX_N], v[MAX_N], w[MAX_N];
bool done[MAX_N];
int d[MAX_N];
vector<PII> G[MAX_N]; void Dijkstra(int n)
{
priority_queue<PII, vector<PII>, greater<PII> > q; for (int i = ; i <= n; ++i)
d[i] = (i == ? : INT_MAX);
memset(done, NULL, sizeof(done));
q.push(make_pair(d[], ));
while (!q.empty())
{
PII x = q.top();
q.pop();
int u = x.second;
if (done[u]) continue;
done[u] = true;
for (int i = ; i < G[u].size(); ++i)
{
int v = G[u][i].first;
int w = G[u][i].second;
if (d[v] > d[u] + w)
{
d[v] = d[u] + w;
q.push(make_pair(d[v], v));
}
}
}
} int main()
{
int N, M; while (scanf("%d %d", &N, &M) != EOF && N && M)
{
for (int e = ; e <= M; ++e)
{
scanf("%d %d %d", &u[e], &v[e], &w[e]);
G[u[e]].push_back(make_pair(v[e], w[e]));
G[v[e]].push_back(make_pair(u[e], w[e]));
}
Dijkstra(N);
printf("%d\n", d[N]);
for (int i = ; i <= N; ++i)
G[i].clear();
}
return ;
}

最新文章

  1. NOI 题库 8465
  2. C语言共用体(Union)
  3. C#中可直接调用WIN32的API函数--USER32.DLL
  4. advanced validation on purchase.
  5. HTML5+JS 《五子飞》游戏实现(八)人机对战
  6. 使用IDEA进行远程调试
  7. js正则,电话,邮箱
  8. H.264 / MPEG-4 Part 10 White Paper-翻译
  9. &lt;&lt;精益创业&gt;&gt;读书笔记
  10. Nginx代理与负载均衡配置与优化
  11. functional cohesion
  12. HDU1010 Tempter of the Bone
  13. Oracle中INT、FLOAT、NUMBER区别
  14. linux文件系统学习
  15. 45个非常有用的 Oracle 查询语句小结
  16. Google Maps Android API v2 (2)- 地图对象
  17. 强烈推荐:240多个jQuery插件【转】
  18. my discipline life
  19. 互联网公司的面试官是如何360&#176;无死角考察候选人的?[z]
  20. 转载 SpringMVC详解(三)------基于注解的入门实例

热门文章

  1. Codility 1: equilibrium
  2. linux杂记(十)what is BASH Shell
  3. JavaScript之转义字符
  4. C++の友元の例
  5. jQuery 插件入门
  6. &lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Frameset//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd&quot;&gt;的含义
  7. Mac 键盘快捷键
  8. 身份验证cookies和Token
  9. 算法导论练习6.5-8 k路合并
  10. 01-复杂度2. Maximum Subsequence Sum (25)