hiho_1081_最短路径1
题目
最短路模板题目,纯练习手速。
实现
#include<iostream>
#include<string.h>
#include<iostream>
#include<queue>
#include<cmath>
#include<unordered_map>
#include<unordered_set>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
const int inf = 1 << 29;
const int kEdgeMax = 20005;
const int kNodeMax = 1005;
struct Edge{
int to;
int dist;
int next;
Edge(int t=0, int d=0, int n=0) :to(t), dist(d), next(n){};
};
Edge gEdges[kEdgeMax];
int gEdgesIndex;
int gHead[kNodeMax];
int gDist[kNodeMax];
bool gVisited[kNodeMax]; struct Cmp{
bool operator()(const Edge& e1, const Edge& e2){
return e1.dist > e2.dist;
}
}; void InsertEdge(int u, int v, int d){
int e = gEdgesIndex++;
gEdges[e].to = v;
gEdges[e].dist = d;
gEdges[e].next = gHead[u];
gHead[u] = e;
}
//dijkstra 算法求最短路
int Dijkstra(int s, int t){
priority_queue<Edge, vector<Edge>, Cmp> pq;
gDist[s] = 0;
Edge e = Edge(s, 0, 0);
pq.push(e);
while (!pq.empty()){
e = pq.top();
pq.pop();
int cur_v = e.to;
if (gVisited[cur_v]){
continue;
}
if (cur_v == t){
break;
}
gVisited[cur_v] = true;
for (int eid = gHead[cur_v]; eid != -1; eid = gEdges[eid].next){
int next_v = gEdges[eid].to;
if (!gVisited[next_v] && gDist[next_v] > gDist[cur_v] + gEdges[eid].dist){
gDist[next_v] = gDist[cur_v] + gEdges[eid].dist;
pq.push(Edge(next_v, gDist[next_v], 0));
}
}
}
return gDist[t];
} void Init(){
memset(gHead, -1, sizeof(gHead));
memset(gVisited, false, sizeof(gVisited));
memset(gDist, 0x7F, sizeof(gDist));
gEdgesIndex = 0;
} int main(){
int n, m, s, t, u, v, d;
Init();
scanf("%d %d %d %d", &n, &m, &s, &t);
for (int i = 0; i < m; i++){
scanf("%d %d %d", &u, &v, &d);
InsertEdge(u, v, d);
InsertEdge(v, u, d);
}
int min_dist = Dijkstra(s, t);
printf("%d\n", min_dist);
return 0;
}
hiho_1081_最短路径1的更多相关文章
- Johnson 全源最短路径算法
解决单源最短路径问题(Single Source Shortest Paths Problem)的算法包括: Dijkstra 单源最短路径算法:时间复杂度为 O(E + VlogV),要求权值非负: ...
- Floyd-Warshall 全源最短路径算法
Floyd-Warshall 算法采用动态规划方案来解决在一个有向图 G = (V, E) 上每对顶点间的最短路径问题,即全源最短路径问题(All-Pairs Shortest Paths Probl ...
- Dijkstra 单源最短路径算法
Dijkstra 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法,由计算机科学家 Edsger Dijkstra 于 1956 年 ...
- Bellman-Ford 单源最短路径算法
Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法.该算法由 Richard Bellman 和 Leste ...
- 最短路径算法-Dijkstra
Dijkstra是解决单源最短路径的一般方法,属于一种贪婪算法. 所谓单源最短路径是指在一个赋权有向图中,从某一点出发,到另一点的最短路径. 以python代码为例,实现Dijkstra算法 1.数据 ...
- bzoj 4016: [FJOI2014]最短路径树问题
bzoj4016 最短路路径问题 Time Limit: 5 Sec Memory Limit: 512 MB Description 给一个包含n个点,m条边的无向连通图.从顶点1出发,往其余所有点 ...
- 51nod 1459 迷宫游戏 (最短路径—Dijkstra算法)
题目链接 中文题,迪杰斯特拉最短路径算法模板题. #include<stdio.h> #include<string.h> #define INF 0x3f3f3f3f ],v ...
- C++迪杰斯特拉算法求最短路径
一:算法历史 迪杰斯特拉算法是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题.迪杰斯特拉算法主要特点是以 ...
- 求两点之间最短路径-Dijkstra算法
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.D ...
随机推荐
- 花40分钟写一个-CBIR引擎-代码公开
浏览网页的时候发现一篇不错的文章"用Python和OpenCV创建一个图片搜索引擎的完整指南"http://python.jobbole.com/80860/.作者在浏 ...
- Android 编程下图片的内存优化
1. 对图片本身进行操作 尽量不要使用 setImageBitmap.setImageResource. BitmapFactory.decodeResource 来设置一张大图,因为这些方法在完成 ...
- 修改idea的运行内存
1.如果本地的jdk是32位的,那么最大的内存只能支持到1024 2.测试jdk位数 public class Test { public static void main(String[] args ...
- ocruntime
原作: http://www.jianshu.com/p/25a319aee33d 三种方法的选择 Runtime提供三种方式来将原来的方法实现代替掉,那该怎样选择它们呢? Method Resolu ...
- 解决Duilib创建的win32窗口拖到屏幕上边缘自动最大化
转载:http://bbs.csdn.net/topics/390842294 使用Duilib创建窗口的时候,假如有这样一个需求: 1.窗口大小规定 2.不可拖拽改变窗口大小 3.双击标题栏禁止最大 ...
- Cache缓存对象缓存对象
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DemoCache.aspx ...
- Cheatsheet: 2014 03.01 ~ 03.31
.NET Should I be concerned about PDB files? async and await -Simplified-Internals Web Performance tr ...
- 终止jQuery的$.ajax方法abort
最近遇到,如果用户频繁点击ajax请求,有两个问题: 1,如果连续点击了5个ajax请求,前4个其实是无效的,趁早结束节省资源. 2,更严重的问题是:最后一个发送的请求,响应未必是最后一个,有可能造成 ...
- HQL语句大全(转载)
Hibernate配备了一种非常强大的查询语言,这种语言看上去很像SQL.但是不要被语法结构 上的相似所迷惑,HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承.多态 和关联之类的概念. ...
- c语言中的位移位操作
先要了解一下C语言里所有的位运算都是指二进制数的位运算.即使输入的是十进制的数,在内存中也是存储为二进制形式. “<<”用法: 格式是:a<<m,a和m必须是整型表达式,要求m ...