HDU 2544.最短路-最短路(Dijkstra)
本来不想写,但是脑子不好使,还是写一下备忘_(:з」∠)_
最短路
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 90684 Accepted Submission(s): 39286
输入保证至少存在1条商店到赛场的路线。
1 2 3
3 3
1 2 5
2 3 5
3 1 2
0 0
2
Dijkstra算法,单源最短路,比较好用,官方的话不想敲了,直接写自己的理解。
贴一个最最原始版本的,用二维数组存边的。
贴一下用Dijkstra写的版本,本题其他版本以及题意,传送门ヾ(●´∀`●)
代码:
#include<bits/stdc++.h>
using namespace std;
const int N=;
const int INF=0x3f3f3f3f;
int a[N][N]; //存数据的边
int dist[N]; //记录最短路的距离
int vis[N]; //标记是否访问过
int n,m;
void Dijkstra(){ //迪杰斯特拉算法
int tmp,v;
memset(vis,,sizeof(vis));
for(int i=;i<=n;i++)
dist[i]=a[][i]; //首先将dist初始化,将起点与其他点的距离先存进去
dist[]=; //起点到起点距离为0
vis[]=; //标记起点被访问过
for(int i=;i<=n;i++){
tmp=INF;
for(int j=;j<=n;j++){
if(!vis[j]&&tmp>dist[j]){ //未访问过并且找出与当前要查找的点的最短路径(因为与某个点相连的其他点有多个,找出距离最短的,所以for循环一遍)
tmp=dist[j];
v=j; //用v存一下当前的最短路径的点
}
}
vis[v]=;//将当前找到的点标记访问过
for(int l=;l<=n;l++){
if(!vis[l]) //找出与之相连的点的最短路径
dist[l]=min(dist[l],dist[v]+a[v][l]);//更新d
}
}
}
int main(){
while(~scanf("%d%d",&n,&m)){
if(n==&&m==)break;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++)
a[i][j]=INF;
}
int h,k,val;
for(int i=;i<m;i++){
scanf("%d%d%d",&h,&k,&val);
a[h][k]=a[k][h]=val;
}
Dijkstra();
printf("%d\n",dist[n]);
}
return ;
}
迪杰斯特拉算法最厉害的是d这个数组,随时更新。
要好好理解,表达能力有限,继续加油。
加油加油。_(:з」∠)_
HDU 2544.最短路-最短路(Dijkstra)的更多相关文章
- HDU 2544(简单最短路)
http://acm.hdu.edu.cn/showproblem.php?pid=2544 /* 使用pair代替结构 */ #include <iostream> #include & ...
- HDU 2544 单源最短路
题目链接: 传送门 最短路 Time Limit: 1000MS Memory Limit: 65536K 题目描述 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是 ...
- ACM: HDU 2544 最短路-Dijkstra算法
HDU 2544最短路 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descrip ...
- HDU 2544 最短路 【Dijkstra模板题】
传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2544 思路:最短路的模板题 Dijkstra 算法是一种类似于贪心的算法,步骤如下: 1.当到一个点时, ...
- HDU - 2544最短路 (dijkstra算法)
HDU - 2544最短路 Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以 ...
- (重刷)HDU 1874 畅通工程续 + HDU 2544 最短路 最短路水题,dijkstra解法。
floyd解法 今天初看dijkstra,先拿这两题练手,其他变形题还是不是很懂. 模版题,纯练打字... HDU 1874: #include <cstdio> #define MAXN ...
- 单源最短路模板 + hdu - 2544
Floyd Floyd 本质上类似一种动态规划,dp [ i ] [ j ] = dp [ i ] [ k ] + dp[ k ] [ j ]. /** * Night gathers, and no ...
- UESTC 30 &&HDU 2544最短路【Floyd求解裸题】
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...
- ACM-最短路(SPFA,Dijkstra,Floyd)之最短路——hdu2544
***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...
- hdu 2544 hdu 1874 poj 2387 Dijkstra 模板题
hdu 2544 求点1到点n的最短路 无向图 Sample Input2 1 //结点数 边数1 2 3 //u v w3 31 2 52 3 53 1 20 0 Sample Output32 ...
随机推荐
- 虚拟机中如何挂载物理磁盘(VMware操作)
测试的时候难免会遇到,从真是机器拷贝东西到虚拟机中,虽说安装了VMware tools(Vm→Install VMware tools...),就可以将文件直接拖到虚拟机里面去,但是这样拷贝总是需要花 ...
- SSH集成cxf 发布restful webservice
首先讲一下什么是restful webservice ,这个问题网上一搜有很多博文去长篇大论的介绍它,但是最后你看完了也会觉得云里雾里的,所以我在这里简单的讲一下我理解的rest webservice ...
- IDEA调试快捷键
F9 resume programe 恢复程序 F8 Step Over 相当于eclipse的f6 跳到下一步 Ctrl+Shift+F,全局查 ...
- FluentAPI深入
1. HasMaxLenght 设定字段得最大长度: static void Main(string[] args) { using (TestDbContext ctx = new TestDbC ...
- 编译Code::Blocks源码 with MinGW on Win
Build Code::Blocks源码 ---By 狂徒归来 CodeBlocks是一款非常优秀的IDE !可惜的是没有64位的版本,而且本来是轻量级别的IDE就应该够轻,能够像记事本工具一样,迅速 ...
- eclipse 运行错误:在类XXX中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args) 否则 JavaFX 应用程序类必须扩展javafx.application.Application
新建了一个类Hello: 代码: 第一次运行报错: 点击关闭该类的界面时出现: 点击是,然后再次打开,可以正确执行,结果为: 这是为什么....,后来发现了原因:是每次运行或调试前没有自动保存编辑的内 ...
- Lettcode Kth Largest Element in an Array
Lettcode Kth Largest Element in an Array 题意:在无序数组中,寻找第k大的数字,注意这里考虑是重复的. 一直只会简单的O(nlogn)的做法,听说这题有O(n) ...
- 华中农业大学第四届程序设计大赛网络同步赛 J
Problem J: Arithmetic Sequence Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 1766 Solved: 299[Subm ...
- Python实现队列
队列的数据结构的主要结构:一个结点类和两个方法:出队列和进队列 class Node(object): def __init__(self,val): self.val = val self.next ...
- Fiddler抓取HTTP请求
参考链接:http://blog.csdn.net/ohmygirl/article/details/17849983/ http://www.cnblogs.com/kingwolf_JavaScr ...