博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HDU 2066(dijkstra算法模板题)
阅读量:7078 次
发布时间:2019-06-28

本文共 1517 字,大约阅读时间需要 5 分钟。

题目链接:

标准最短路径问题,起点可以看作是草儿家,从草儿家到与家相连的地方time=0,dijkstra求最短路径,然后找出想去地方的最小代价就行了,经典模板题,但是WA了好几次,开始找不出错误,后来发现体重有句话:(1=<(a,b)<=1000;a,b 之间可能有多条路),瞬时明白了,两点之间可以有多条路径的。 

 

当然我的代码中,dijkstra 中的 n有些大了,我们可以在主函数中记录下u,v的最大值作为n就够了,不必每次都遍历完

1 #include
2 #include
3 #include
4 #define INF 100000000 5 #define n 1000 6 7 using namespace std; 8 int map[1100][1100],dis[1100],flag[1100]; 9 int T,S,D;10 void dijkstra()11 {12 int i,j,k,min;13 memset(flag,0,sizeof(flag));14 flag[0]=1;15 for(i=0;i<=n;i++)16 {17 dis[i]=map[0][i];18 }19 for(i=1;i
dis[k]+map[k][j])34 dis[j]=dis[k]+map[k][j];35 }36 }37 }38 int main()39 {40 int u,v,w,x,y,min;41 while(scanf("%d%d%d",&T,&S,&D)!=EOF)42 {43 for(int i=0;i<1010;i++)44 for(int j=0;j<1010;j++)45 map[i][j]=INF;46 for(int i=1;i<=T;i++)47 {48 scanf("%d%d%d",&u,&v,&w);49 map[u][v]=map[u][v]>w?w:map[u][v]; //可能两点之间有多条路径50 map[v][u]=map[u][v];51 }52 for(int i=1;i<=S;i++)53 {54 scanf("%d",&x);55 map[0][x]=0;56 map[x][0]=0;57 }58 dijkstra();59 min=INF;60 for(int i=0;i
dis[y]) min=dis[y];64 }65 printf("%d\n",min);66 }67 return 0;68 }
View Code

 

转载于:https://www.cnblogs.com/hjf007/p/3314054.html

你可能感兴趣的文章
php如何妩媚地生成执行的sql语句
查看>>
第 93 章 JVM
查看>>
微信或将于12月开放H5游戏入口
查看>>
如何处理 android 方法总数超过 65536 . the number of method references in a .dex file exceed 64k...
查看>>
[常微分方程]Lecture 1: ODE的几何解法:方向场、积分曲线
查看>>
[翻译]LSP程序的分类
查看>>
【工作】蚂蚁金服招DBA
查看>>
Nim教程【十】
查看>>
oracle for linux安装报错 file /home/oracle/.Xauthority does not exist
查看>>
SAP MM 顾问在实施项目工作中的苦逼和优势
查看>>
用SoapUI进行Webservice的性能压力测试
查看>>
SAP传输系统TMS的配置和实例
查看>>
IT依然重要 CIO转型至关重要
查看>>
[20160407]光标共享TOP_LEVEL_RPI_CURSOR
查看>>
Thinkphp入门三—框架模板、变量(47)
查看>>
深入理解C指针之六:指针和结构体
查看>>
git branch(转)
查看>>
MaxCompute 2.0 The Evolution of NewSQL
查看>>
diff详解,读懂diff结果
查看>>
SQL Server同时操作(all-in-once)特性
查看>>