hdoj 1874 dijkstra
在做PAT的甲1003,思考DFS和图什么的,时间紧张直接去看柳神(日后上传柳神的C++版本)的订阅,得知是dijkstra,转去用hdoj 1874练手,写了两天,终于调出来了
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874
题目大意:给你点 和 边的数目,接下来输出边的信息(a, b, c表示a和b之间距离为c),最后给你两个数字,表示两点的点信息。让你输出最短路径,没有就-1.
解题思路:dijkstra的思想是贪心,越想越经典。
起始动作就是从出发点开始,把其余所有点到出发点的最近距离存储下,
接下来的动作就是逐渐辐射,
方法是:存储:找到距离出发点最近的点记录下来(从存储的所有点中遍历),这个点就是出发点到这个点的最近距离,
批量处理:下一次把这个点作为过渡,如果 起点到这个点+这个点到其他某点的距离 < 起点直接到其他某点的距离,就把 起点直接到某点的距离更新为通过过度得到的距离,相当于把所有的更新存储的一下。
再接着执行,直到没有新的点可以加入作为过度为止(注意:每次得出的过度点是上一次得到的,然后上一次得到过度点就是起始点到过度点的最近距离)->(这段话我是脑子里有个这幅图B站女老师(主要学习思路))
上段思路我是理解了,可以写出,可以看懂
那么接下来说一下原理,和怎么想到的
上图:
用到的资料:直接看柳神题解得知是dijkstra,用到的学习资料,B站女老师(主要学习思路),CSDN(主要看看代码思路)
看着不错的界面但是没去看的资料:博客园,CSDN1,CSDN2,CSDN3
dijkstra基础题陈列:https://www.cnblogs.com/ACMan/archive/2012/07/23/2605673.html
动态演示:我反应慢,思维也慢,没跟上https://www.cnblogs.com/ly199553/p/5547808.html
卿学姐代码风格:https://www.bilibili.com/video/av4224493/?spm_id_from=333.788.videocard.3
容易WA的地方:
1.重边的处理
2.起点与终点相同的情况
参考:http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=36571&messageid=1&deep=0
代码:
/***************************************
* About: hdoj 1874(Dijkstra)
* Author: GerJCS
* B log:
From: 19/2/27
***************************************/ /* 思路
*/ //#include<bits/stdc++.h>
#include<cstdio>
#include<cstring>
using namespace std;
#define INF 999999
int e[][];
int visit[];
int dis[];
int m, n;
int a, b, c;
int start, end;
void init1()
{
for(int i = ; i < m; i ++)
for(int j = ; j < m; j ++){
if(i == j)
e[i][j] = ;
else{
e[i][j] = INF;
e[j][i] = INF;
}
}
}
void init2()
{
for(int i = ; i < m; i ++)
visit[i] = ;
visit[start] = ;
for(int i = ; i < m; i ++)
dis[i] = e[start][i];
}
//int dijkstra()
void dijkstra()
{
int u = -;
int min;
for(int i = ; i < m - ; i ++)
{
min = INF;
for(int j = ; j < m; j ++)
{
if(!visit[j] && min > dis[j])
{
min = dis[j];
u = j;
}
}
// if(u == -1)
// return -1;
// if(u == end)
// return dis[u];
visit[u] = ;
for(int k = ; k < m; k ++)
if(!visit[k] && dis[k] > dis[u] + e[u][k])
dis[k] = dis[u] + e[u][k];
}
// return -1;
}
int main()
{
// freopen("C:/Users/GerJCS岛/Desktop/ddd.txt","r",stdin);
// freopen("C:/Users/GerJCS岛/Desktop/out2.txt","w",stdout);
while(scanf("%d%d", &m, &n) != EOF)
{
memset(e, , sizeof(e));
memset(visit, , sizeof(visit));
memset(dis, , sizeof(dis));
init1();
for(int i = ; i < n; i ++)
{
scanf("%d%d%d", &a, &b, &c);
// e[a][b] = c;
// e[b][a] = c;
if(c < e[a][b]){
e[a][b] = c;
e[b][a] = c;
}
} scanf("%d%d", &start, &end);
init2();
dijkstra();
// printf("%d\n", dijkstra());
if(dis[end] == INF)
printf("-1\n");
else
printf("%d\n", dis[end]);
}
} //3 4
//0 1 1
//0 2 1
//1 2 1
//0 2 9
//0 2
------------------------------------------------------------------------------待更新!-----------------------------------------------------------------------------
工具:http://tool.chinaz.com/Tools/textencrypt.aspx
密码:139*****136
加密后文字:
U2FsdGVkX19wgyNcTGQ7XiAr3GegDzjioUFtqCDiTpEjH3U8PCn0MGej0sbXbpmJ
/ek4/l8Di9oGOAFRHkQNZM4aRC474gAVDVi2L4FYs4rLjuxbYGh4ZydVxcVBXQPc
muey88tUTJJ0JpIUI7BR3teM9rtWec4JEWB/1H2khm6j+T+mm2qv+DpUcjZCWpoG
tRgFhQEnHfORwj95LI98+zPWjTC4ggmDYr21JleIbFaZ6CmbsiX/XtxkOAUZrz6q
8xwj+BRUyCxwjl0aR+98SgtY/HRw1B1hFMYk/Lm5Q41Fk+EXSsFvHI9UI3l4HNZe
g/LcjheiRBV3N5o4AH9qnLJIFhO0zFzzk9x0bM5/svtUEJVXpRqNjimx+vtuBSCi
d6oJbvI3dqVx7b7ukUOe0X6r0cAa5OFbbtR9+qNSBMiT6GKDb0riT8YP9c2PcOv4
phEJ83vWJtfTAf+g+upsGZtM3dT/yTRMdYwyVxkWvtoRl53PYm6/xOvgAuUOKWAF
thfH+nE3SHskAC/hOIVFue7R8bmFI8Ld/vG04bTTwmgM1rh+BwDEpCDuaExlUFI/
oanl8bCb66gMP/20XhHUzUZv6JsF6HmQPBfIw4ikcYboCk4lTLlu3oQYi7qy1hSs
km9uuBYFBc3ygaxjW//zTWYW5HOKPCp05p/q+/wYvEYC1OyChrocHpqhD7dB4FSR
oPWUvTvNS5ym4QsXnzzXLZ9CoYAic8iWWKMM/CPC5BOaolwdvlGM9zLDdoTqxqJ5
JiYndAf47DMXOxVUle9VvKv1MvL7Xk5qajPHVn9p5mHkdQicb0W64JLGA3DeZIQ/
f8i/KiKFwJxIs2qxjfj9DuF/P8kSbIJmE+ayJ5Yiml38bY6d+KDsQf0wNsc527Fr
vKouoogXgmINlHuly5Zy+iob6y8DbFzOgP2u9kow87zCEgSntpr9BGhP6wNyp5xp
LVkkfz5rXKrAJMIFCmJhMht8E//LYQmdJkTUsUqbF3MZc40HfQPE4LUfdRUBNTkj
O8hE6hLDNXQgXgO26Mf441T2FRKQYPH/3DYYlnRgly57kwBOu2wjpKC6WsE4JJWJ
683mzF/dTZxaNE+c6uAdbNvKUiETr4dlWXktIUWZO+Zo2SHVGvd9/lR0x354Wf/B
/YxZwv8mJxAI4qCSQVHwZEQlSRAHTpuqPxqZPd2dpB9YiB5+uEw6li4MEgESYsVk
YQJvbEDHBTH6R9RitJ79GBWOpPDs5HbBK5B1BWSgbLdRxvnWeV/DV9dnnA6smEDw
qBP2tmfTg/qTvaHYKj3xQkqGV3xFteiET1NRGlt+zhxc0axf3lMfdxecLlAy6zEU
Nv4MKTufILpY0dp1iy/uQLTkRLj8uCoEbK1e+CDNSNPS39rZwhfJjTol5CracvHs
RMDONEfHbEyxyoBmDgJUXjnUALTncc+4trIigiWOX0F/bz5lFU7Y/MCftzo+xpvV
9ChBNReSnry9/+m0UXEh124X362L+dqCb5iK+Nx1LE2iIKFs7GmT2m9u3pLFu1YR
On9UFXZiN15zsCgzU4+X2dLvc1CSlrOZAt2AUpgjdZ/4iDJqom3CDoBQNr0/I9Vt
7fUqnlXliPbe51uyJqX8fsbd27ty5vnG8mrdz+m6/mc=
人权!资本!圈子!平台!
hdoj 1874 dijkstra的更多相关文章
- hdoj 1874 畅通工程续(单源最短路+dijkstra)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1874 思路分析:该问题给定一个无向图.起始点和终点,要求求出从起始点到终点的最短距离: 使用Dijks ...
- hdoj 1874 畅通工程续【dijkstra算法or spfa算法】
畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submi ...
- hdu 1874 Dijkstra算法
先贴个网上找的比较通俗易懂的教程: 2.1Dijkstra算法(非负权,使用于有向图和无向图) Dijkstra算法是典型最短路算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心 ...
- hdoj 1874 畅通工程续
Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行 ...
- HDOJ 1874
畅通工程续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- HDOJ 2680 Dijkstra
题目大意: 给你一个有向图,一个起点集合,一个终点,求最短路.... 解题思路: 1.自己多加一个超级源点,把起点集合连接到超级源点上,然后将起点与超级源点的集合的路径长度设为0,这样就称为一个n+1 ...
- hdu 1874 dijkstra 队列实现 比数组高效特别在稀疏图
参考 http://blog.csdn.net/zhuyingqingfen/article/details/6370561 刘汝佳白皮书 #include<stdio.h> #incl ...
- hdoj 1874 畅通project续【SPFA】
畅通project续 Time Limit : 3000/1000ms (Java/Other) Memory Limit : 32768/32768K (Java/Other) Total Su ...
- HDOJ 1874 畅通project续
畅通project续 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
随机推荐
- Upload-Labs 实验操作记录
0x01 安装 下载:https://github.com/c0ny1/upload-labs 环境:简单搭建phpstudy环境即可,记得在upload-labs根目录下创建该文件夹 0x02 文件 ...
- Mybatis Generator通用Join的实现
通常,我们使用Mybatis实现join表关联的时候,一般都是通过在xml或注解里写自定义sql实现. 本文通过Mybatis Generator的插件功能新增一个JoinPlugin插件,只要在配置 ...
- (一)微信小程序:实现引导页
基本目录结构 index目录下文件操作步骤 1.针对index.wxml <!--index.wxml--> <view class="index-container&qu ...
- Lesson0423
ABS计算几何科普讲座 讲个笑话,ABS又来科普简单知识了 %%% STO szO ABS Orz OTZ %%% 之前完全没有接触过计算几何啊...ABS聚聚给我们从最简单的部分讲起,听得还是很爽的 ...
- mongodb connection refused because too many open connections: 819
Env Debian 9 # 使用通用二进制方式安装 # mongod --version db version v3.4.21-2.19 git version: 2e0631f5e0d868dd5 ...
- zabbix 微信告警机制
微信告警首先得注册一个企业微信,然后才能实现微信告警.自行百度 微信: 添加一个用户到上面创建的部门里面 创建完成记住 AgentID 和 Secret 下一步:记住企业 ID 1)编辑zabbix ...
- Lambda表达式最佳实践
简介 Lambda表达式java 8引入的函数式编程框架.之前的文章中我们也讲过Lambda表达式的基本用法. 本文将会在之前的文章基础上更加详细的讲解Lambda表达式在实际应用中的最佳实践经验. ...
- 汉字编码对照表(gb2312/Big5/GB2312)
一.汉字编码的种类 1.GB2312又称国标码,由国家标准总局发布,1981年5月1日实施,通行于大陆.新加坡等地也使用此编码.它是一个简化字的编码规范,当然也包括其他的符号.字母.日文假名等,共74 ...
- MyBatis学习总结(9)——使用MyBatis Generator自动创建代码
2019独角兽企业重金招聘Python工程师标准>>> 由于MyBatis属于一种半自动的ORM框架,所以主要的工作就是配置Mapping映射文件,但是由于手写映射文件很容易出错,所 ...
- 快速上手最新的 Vue CLI 3
翻译:疯狂的技术宅 原文:blog.logrocket.com/getting-sta- 概要:本文将指导你快速上手 Vue CLI 3,包括最新的用户图形界面和即时原型制作功能的使用步骤. 介绍 尤 ...