hdu2066----------dijkstra模板题
这是一道多源点的dijkstra模板题,我整整做了一上午,交了14遍,过了4遍(呵呵,很疯狂啊!)
总的来说,收获颇丰。应该算完全掌握了这种算法。这是第一次过的代码,用的超级笨的方法,对每个起点和终点分别调用dij算法。
放在low[i][j] (代表第i个点到第j个点的最短距离) 中,最后再从low[i][j]找出最短的路径输出。 890ms过的。呵呵,很强,几乎没有比我更慢的啦!嘿嘿(不好意思) ,代码也很长。
AC:
#include<stdio.h>
#include<string.h>
#define inf 100000000
int map[1051][1051];
int s[1051];
int d[1051];
int from[1051]; //有s 个起点
int want[1051]; //有d 个终点
int low[1051][1051]; //low[i][j] 表示第i个点到第j 个点的最短路径
int dij(int v,int e) //起点v,终点e
{
int i,j,min,pos;
for(i=1;i<=1050;i++)
{
s[i]=0;
d[i]=map[v][i];
}
s[v]=1;
d[v]=0;
for(i=1;i<1050;i++)
{
min=inf;
for(j=1;j<=1050;j++)
{
if(!s[j]&&min>d[j])
{
pos=j;
min=d[j];
}
}
s[pos]=1;
if(pos==e||min==inf) break; //不要怀疑自己 ,这里没有错误! 我的思想是正确的
for(j=1;j<=1050;j++)
{
if(!s[j]&&d[j]>(d[pos]+map[pos][j]))
d[j]=d[pos]+map[pos][j];
}
}
return d[e];
}
int main()
{
int t,s,d;
int i,j,k;
int a,b,time;
while(scanf("%d%d%d",&t,&s,&d)!=EOF)
{
for(i=1;i<=1050;i++)
{
for(j=1;j<=1050;j++)
{
map[i][j]=inf;
low[i][j]=inf;
}
}
//memset(map,100000000,sizeof(map));
//memset(low,100000000,sizeof(low));
for(i=1;i<=t;i++)
{
scanf("%d%d%d",&a,&b,&time);
{
if(map[a][b]>time) //这点很操蛋,没读清题意,WA了n多次!
map[a][b]=map[b][a]=time; //两个点之间可以有多条路,每次找最短边,输入地图中
}
}
for(i=1;i<=s;i++)
scanf("%d",&from[i]);
for(i=1;i<=d;i++)
scanf("%d",&want[i]);
for(i=1;i<=s;i++)
{
for(j=1;j<=d;j++) //我的方法很笨,对每个点调用dij,所以就很耗时间
{ //说明对dij算法 还不是很清楚。
//事实上,对每个起点调用dij算法,就得到了所有结果了
low[i][j]=dij(from[i],want[j]);
}
}
k=inf;
for(i=1;i<=s;i++)
{
for(j=1;j<=d;j++)
{
if(k>low[i][j])
k=low[i][j];
}
}
printf("%d\n",k);
}
return 0;
}
转载于:https://www.cnblogs.com/zhangyabin---acm/archive/2012/03/20/2407930.html
hdu2066----------dijkstra模板题相关推荐
- HDU 2544最短路dijkstra模板题
最短路 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submis ...
- Dijkstra模板题——单源最短路径(洛谷 P3371)
题目选自洛谷P3371 这个数据类型可以将两个数据进行打包,比如 pair<int,int> 就是将两个int型进行打包. 而且使用优先队列时,优先队列会根据你打包的第一个数据进行排序. ...
- 城市平乱 (dijkstra模板题)
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=115 本题求单源最短路,这里有个技巧,因为源点不一,这时我们可以设置一个"超级源 ...
- POJ 1511 Invitation Cards(最短路径,dijkstra 模板题)
题目意思: 在有向图中,求1到所有点的最短路之和 + 所有点到1的最短路之和. 本题要点: 1.先求1点 到其他点的单源最短路径 d[i](1 <= i <= n), 用 dijkstra ...
- POJ-2387:Dijkstra模板题
题目链接 AC代码: #include <stdio.h> #include <string.h> #include <string> #include <i ...
- 【dijkstra模板】旅游规划 (25 分)
立志用最少的代码做最高效的表达 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条 ...
- ~~朴素dijkstra算法 (搜索与图论)(附模板题AcWing 849. Dijkstra求最短路 I)
模板 时间复杂是 O(n2+m), n表示点数,m 表示边数 int g[N][N]; // 存储每条边 int dist[N]; // 存储1号点到每个点的最短距离 bool st[N]; // 存 ...
- P1339 热浪 最短路径模板题
这么naive的题面一看就是最短路模板题~~~ ok.首先是floyd算法,tts,记得把k放在最外面就行了. 1 #include <cstdio> 2 #include <cst ...
- 一起开心2020暑假训练第二周 图论(模板题)
比赛链接: 文章目录 A HDU 1285 一 B HDU 1863 起 C POJ 2387 开 D POJ 1502 心 E HDU 5922 图 F HDU 2112 论 A HDU 1285 ...
最新文章
- 比起睡觉,我更喜欢刷巨详细的Java枚举类,这是来自猿人的自觉呀
- MyBatis学习总结(四)——解决字段名与实体类属性名不相同的冲突
- cxf和spring结合出现问题
- iec104点号_IEC104报文流程(有常用类型标识解释)
- 前端学习(2648):vue3.0的处理展示
- (干货分享)农商行中商业智能建设的整体思路与架构
- python创建一个字典、其中值为1_从2个列表创建一个字典,其中一个作为键,另一个作为python中的值...
- 公共计算机房电气设计规范,《住宅建筑电气设计规范》(总结版)
- 高中计算机课程网页修改,高中信息技术教学贯彻新课改理念
- 实时错误‘429’:ActiveX控件不能创建对象
- Eclipse 下载带有WTP 相应插件板本的地址
- 云集宣布品牌升级,推出全新slogan“购物享受批发价”
- label mpchart 饼图_ECharts饼图属性设置
- Linux系统用gcc编写C语言程序
- Flume笔记二:案例
- README.generic-sessions.md
- php安装protocol buffer 扩展,thinkphp引入protocol buffer
- 【链想会】第八期 分布式商业管理的内在逻辑和价值思考
- 将SkeyeVSS综合安防监控视频流媒体云平台监控画面嵌入微信公众号进行直播
- 平板电脑取代PC是大势所趋?
热门文章
- URAL 1233 Amusing Numbers 好题
- pearson, kendall 和spearman三种相关分析方法的区别
- 【编译】StreamInsight应用调优入门(一)——概述
- VBS脚本压缩IIS日志
- Web 2.0 编程思想:16条法则(转)
- python父类方法的装饰器_Python使用装饰器自动调用父类__init__
- html 中avi视频插件,JDG让一追二击败V5!Kanavi降维打击,逆版本选英雄不按常理出牌...
- mongodb java 开源_开源的Mongodb java client -- mango发布
- sql 树状结构中知道 父节点与孙节点_数据结构之(树)
- 【Linux】Linux内核的整体架构简介