HDU-2066(dijkstra最短路综合)
来源:互联网 发布:淘宝土鸡蛋怎么上架 编辑:程序博客网 时间:2024/04/29 19:21
此题目,就是一定要注意建双路边,而且因为不知道有多少个顶点,所以开始的时候就要建最多的情况.也就是1005(习惯性的多出几个咯),然后就是一个起点,对应的多个终点的两重循环就好,其实还是比较简单的.
贴出代码:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <math.h>#define inf 0x3fffffffint M,S,D;//M represents the number of edges,S stands for the number of the beginning point,and D represents the number of destination;int visit[1005];int dis[1005];int map[1005][1005];int sta[1005];int des[1005];int dijkstra(int st){for(int i=1;i<=1005;i++)dis[i]=inf;dis[st]=0;for(int j=1;j<=1005;j++){int t=inf,pos;for(i=1;i<=1005;i++){if(!visit[i]&&t>dis[i]){t=dis[i];pos=i;}}visit[pos]=i;for(i=1;i<=1005;i++){if(!visit[i]&&dis[i]>dis[pos]+map[pos][i]&&map[pos][i]!=0x3f3f3f3f){dis[i]=dis[pos]+map[pos][i];}}}int min=inf;for(int k=1;k<=D;k++){if(min>dis[des[k]]){min=dis[des[k]];}}return min;}int main(){while(scanf("%d%d%d",&M,&S,&D)!=EOF){int a,b,time;memset(map,0x3f,sizeof(map));for(int i=1;i<=M;i++){scanf("%d%d%d",&a,&b,&time);if(time<map[a][b]){map[a][b]=time;map[b][a]=time;}}for(int j=1;j<=S;j++){scanf("%d",&sta[j]);}for(i=1;i<=D;i++){scanf("%d",&des[i]);}int t=inf;for(j=1;j<=S;j++){memset(visit,0,sizeof(visit));int ans=dijkstra(sta[j]);if(t>ans){t=ans;}}printf("%d\n",t);}return 0;}
- HDU-2066(dijkstra最短路综合)
- hdu 2066 Dijkstra 最短路应用
- HDU 2544 最短路 (最短路 Dijkstra)
- hdu 2544 最短路--Dijkstra
- HDU 2544 最短路 dijkstra
- HDU 2544 Dijkstra 最短路
- HDU 1874 dijkstra最短路
- hdu 2680最短路dijkstra
- hdu 2544最短路dijkstra
- hdu 2544 dijkstra最短路
- HDU 2544 最短路 Dijkstra
- [HDU 2544]最短路[Dijkstra]
- 【Dijkstra】-HDU-2544-最短路
- HDU--2544最短路【Dijkstra】
- HDU 3790 最短路 Dijkstra
- HDU 2544 最短路(dijkstra)
- 【hdu 2066】 一个人的旅行 ( 最短路 Dijkstra)
- hdu 2066 一个人的旅行(Dijkstra求最短路问题)
- 仿百度文库解决方案(五)-flexpaper实现文档的在线预览
- C\C++的内存分配方式
- 经典的MYSQL语句介绍
- jquery 与 html 取值混淆
- C++中类的函数指针
- HDU-2066(dijkstra最短路综合)
- STL学习笔记之 (三)容器 deque
- CComPtr和CComQIPtr的区别
- 数据库笔记三
- MySQL 安装初步使用
- struts2对Action中指定方法进行校验
- ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
- 数据库基础(二)
- IOS 开发学习(2): XCode4 开发环境学习