题目链接: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 ;
}

hdoj 2544 最短路(最短路+Dijkstrea算法)的更多相关文章

  1. 算法学习笔记(三) 最短路 Dijkstra 和 Floyd 算法

    图论中一个经典问题就是求最短路.最为基础和最为经典的算法莫过于 Dijkstra 和 Floyd 算法,一个是贪心算法,一个是动态规划.这也是算法中的两大经典代表.用一个简单图在纸上一步一步演算,也是 ...

  2. 算法笔记--次小生成树 && 次短路 && k 短路

    1.次小生成树 非严格次小生成树:边权和小于等于最小生成树的边权和 严格次小生成树:    边权和小于最小生成树的边权和 算法:先建好最小生成树,然后对于每条不在最小生成树上的边(u,v,w)如果我们 ...

  3. HDOJ 2544 最短路(最短路径 dijkstra算法,SPFA邻接表实现,floyd算法)

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  4. hdoj 2544 最短路【dijkstra or spfa】

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  5. HUD 2544 最短路 迪杰斯特拉算法

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  6. 【hdu 2544最短路】【Dijkstra算法模板题】

    Dijkstra算法 分析 Dijkstra算法适用于边权为正的情况.它可用于计算正权图上的单源最短路( Single-Source Shortest Paths, SSSP) , 即从单个源点出发, ...

  7. hdoj 2544 最短路

    题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=2544 分析:Dijkstra算法 //2013-10-30 10:01:25 Accepted 254 ...

  8. hdoj 2544最短路

    Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要 ...

  9. HDU 2544 最短路(初涉SPFA算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2544 Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t ...

随机推荐

  1. ##DAY12 UITableViewCell自定义

    ##DAY12 UITableViewCell自定义 #pragma mark -------自定义视图步骤--------- 自定义视图步骤: 1)在自定义cell类中,将所有cell要显示的子视图 ...

  2. android 文件操作类简易总结

    android 文件操作类(参考链接) http://www.cnblogs.com/menlsh/archive/2013/04/02/2997084.html package com.androi ...

  3. shell 守护进程

    #!/bin/sh #守护进程,接受2个参数 #para CMD 执行的命令 #pare ID 唯一标识改命令 if [ "$1" = "" -o " ...

  4. memcached与redis

    Memcached VS Redis 问题:memcached 与 redis 哪个好? 答:这个问题它依赖与工程类别和它的数据. 1.它们都是内存 key/value 类型的高速与高可用的查询表. ...

  5. Mybatis使用存储过程(MySql)

    推荐文章:http://www.iteye.com/topic/1132302 http://yhjhappy234.blog.163.com/blog/static/3163283220124557 ...

  6. 使用sql语句创建表、修改表、添加列等

    1. 创建表: CREATE TABLE 学生信息 (    学号 varchar(14) IDENTITY(1,1) PRIMARY KEY,    姓名 varchar(8) UNIQUE NOT ...

  7. Node.js 启动小结

    配置环境变量: cmd-------> 启动dyson服务 在项目的路径下 如open cmd进入open目录执行npm start命令 在浏览器下输入访问地址:http://localhost ...

  8. pandas的札记

    导入导出数据 在导入,导出DataFrame数据时,会用到各种格式,分为 to_csv ;to_excel;to_hdf;to_sql;to_json;to_msgpack ;to_html;to_g ...

  9. Mysql 忘密码 + Phpadmin 修改密码无法登陆

    mysql有时候忘记密码了怎么办?我给出案例和说明!一下就解决了! Windows下的实际操作如下 1.关闭正在运行的MySQL. 2.打开DOS窗口,转到mysql\bin目录. 3.输入mysql ...

  10. How to get the xpath by clicking an html element

    How to get the xpath by clicking an html element How to get the xpath by clicking an html element