hdu 2544 单源最短路径(邻接矩阵Dijkstra实现)
2014-02-12 19:56
489 查看
Problem: http://acm.hdu.edu.cn/showproblem.php?pid=2544
求商店到赛场最短时间
赤裸裸的单源最短路径
直接套最慢的邻接矩阵Dijkstra模版都0ms过
View Code
本来想写堆优化的Dijkstra的,但想想在这题上岂不大材小用浪费时间,上面已经写过一篇堆优化的Dijkstra了...可围观,>.<
求商店到赛场最短时间
赤裸裸的单源最短路径
直接套最慢的邻接矩阵Dijkstra模版都0ms过
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define MAXN 110 #define INF 1000000 int n,m,Map[MAXN][MAXN],Dist[MAXN];//Map[][]存图 ,Dist[]存最短路长 void init(){ for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++)Map[i][j]=INF; Map[i][i]=0; } int a,b,c; for(int i=0;i<m;i++){ scanf("%d%d%d",&a,&b,&c); Map[a][b]=Map[b][a]=min(Map[a][b],c);//不知图中是否含有重复边,这样写保证就算有重复边也没关系 } } void Dijkstra(int s){ bool Vis[MAXN];//Vis[]记录是否已求最短路 memset(Vis,false,sizeof(Vis)); for(int i=1;i<=n;i++)Dist[i]=Map[s][i]; Vis[s]=true; for(int i=1;i<n;i++){ int Min=INF,k=0; for(int j=1;j<=n;j++)if(!Vis[j] && Dist[j]<Min){ Min=Dist[j]; k=j; } if(k==n)return;//因为题目只需要求1-n的最短路,多余的不用管了 Vis[k]=true; for(int j=1;j<=n;j++)if(!Vis[j] && Map[k][j]!=INF && Dist[j]>Dist[k]+Map[k][j])Dist[j]=Dist[k]+Map[k][j]//更新路径 } } int main() { while(scanf("%d%d",&n,&m),n+m){ init(); Dijkstra(1); printf("%d\n",Dist ); } }
View Code
本来想写堆优化的Dijkstra的,但想想在这题上岂不大材小用浪费时间,上面已经写过一篇堆优化的Dijkstra了...可围观,>.<
相关文章推荐
- 【HDU 1874 2544 2066 2112】 Dijkstra单源最短路径专题 —— 优先队列+邻接表/邻接矩阵
- [置顶] 【matlab dijkstra单源最短路径算法】dijkstra单源最短路径算法实现
- HDU 2544:最短路( 最短路径入门 &&Dijkstra && floyd )
- Dijkstra单源最短路径实现 及 Floyd任意两点之间的最短路径
- 单源最短路径问题[Dijkstra实现]
- 单源最短路径问题[Dijkstra实现]
- 【数据结构】Dijkstra求最短路径的图的邻接矩阵的实现
- HDU 2066 一个人的旅行(Dijkstra求特殊点的单源最短路径)
- 初学图论-Dijkstra单源最短路径算法基于优先级队列(Priority Queue)的实现
- 迪杰斯特拉(Dijkstra)算法求解单源最短路径及其相应长度(java实现)
- 图论;单源最短路径;拓扑排序+松弛(有向无回路);Bellman-Ford(回路,负权回路);Dijkstra(无负权,可回路);可以用最小堆实现算法的优化;
- 采用邻接矩阵实现有向网的存储,建立有向网,并实现单源最短路径
- hdu 2544 dijkstra求最短路径模版题
- 【算法】Dijkstra算法(单源最短路径问题) 邻接矩阵和邻接表实现
- Java实现Dijkstra单源最短路径
- 最短路径 (单源最短路径Dijkstra和任意两点最短路径Floyd) C实现
- 数据结构之有向网邻接矩阵Dijkstra实现源点至其余各顶点最短路径
- 图的邻接矩阵表示与最短路径算法( Dijkstra )代码实现
- Dijkstra算法求单源最短路径Java实现
- (阶段三 dijkstra温习1.3)HDU 1874 畅通工程续(用dijkstra求单源起点和单点终点的最短路径(起点和终点动态给出))