最短路 HDU - 2544 (dijkstra算法或Floyd算法)
Dijkstra解法:
#include <stdio.h>
#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
#include <sstream> #define INF 1000000000 using namespace std;
int N, M;
int dist[],g[][];
int vis[]; void dijkstra(int start)
{
for(int i=;i<=N;i++)
dist[i]=INF;
dist[start] = ;
memset(vis,,sizeof(vis)); while()
{
int mark=-,mindis=INF;
for(int i=;i<=N;i++)
{
if(!vis[i]&&dist[i]<mindis)
{
mindis=dist[i];
mark=i;
}
}
if(mindis == INF) // 找不到未收录的节点,则说明算法结束,退出
break;
vis[mark]=; for(int i=;i<=N;i++)
{
if(!vis[i])
{
dist[i]=min(dist[i],dist[mark]+g[mark][i]);
}
}
}
} int main()
{
while(cin >> N >> M)
{
if(N == && M == )
break; for(int i = ; i <= N; ++i)
for(int j = ; j <= N; ++j)
{
if(i == j)
g[i][j] = ;
else
g[i][j] = INF;
} for(int i = ; i <= M; ++i)
{
int a,b,c;
cin >> a >> b >> c;
g[a][b] = g[b][a] = c;
} dijkstra();
cout << dist[N] << endl; } return ;
}
Floyd解法:
#include <stdio.h>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream> using namespace std; int dis[][]; int main()
{
int N, M;
while(cin >> N >> M)
{
if(N == && M == )
break; for(int i = ; i <= N; ++i)
{
for(int j = ; j <= N; ++j)
{
if(i == j)
dis[i][j] = ;
else
dis[i][j] = ;
}
} int a, b, c;
for(int i = ; i <= M; ++i)
{
cin >> a >> b >> c;
if(dis[a][b] > c)
dis[a][b] = dis[b][a] = c; } for(int k = ; k <= N; ++k)
for(int i = ; i <= N; ++i)
for(int j = ; j <= N; ++j)
{
if(dis[i][j] > dis[i][k] + dis[k][j])
dis[i][j] = dis[i][k] + dis[k][j];
} cout << dis[][N] << endl;
} return ;
}
最短路 HDU - 2544 (dijkstra算法或Floyd算法)的更多相关文章
- 最短路径——Dijkstra算法和Floyd算法
Dijkstra算法概述 Dijkstra算法是由荷兰计算机科学家狄克斯特拉(Dijkstra)于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶点到其余各顶点的最短路径算法,解决的是有向图(无 ...
- 最小生成树(prime算法 & kruskal算法)和 最短路径算法(floyd算法 & dijkstra算法)
一.主要内容: 介绍图论中两大经典问题:最小生成树问题以及最短路径问题,以及给出解决每个问题的两种不同算法. 其中最小生成树问题可参考以下题目: 题目1012:畅通工程 http://ac.jobdu ...
- C++编程练习(11)----“图的最短路径问题“(Dijkstra算法、Floyd算法)
1.Dijkstra算法 求一个顶点到其它所有顶点的最短路径,是一种按路径长度递增的次序产生最短路径的算法. 算法思想: 按路径长度递增次序产生算法: 把顶点集合V分成两组: (1)S:已求出的顶点的 ...
- 【转载】Dijkstra算法和Floyd算法的正确性证明
说明: 本文仅提供关于两个算法的正确性的证明,不涉及对算法的过程描述和实现细节 本人算法菜鸟一枚,提供的证明仅是自己的思路,不保证正确,仅供参考,若有错误,欢迎拍砖指正 ----------- ...
- Dijkstra算法和Floyd算法的正确性证明
说明: 本文仅提供关于两个算法的正确性的证明,不涉及对算法的过程描述和实现细节 本人算法菜鸟一枚,提供的证明仅是自己的思路,不保证正确,仅供参考,若有错误,欢迎拍砖指正 ------------- ...
- 最短路径Dijkstra算法和Floyd算法整理、
转载自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html 最短路径—Dijkstra算法和Floyd算法 Dijks ...
- 【转】最短路径——Dijkstra算法和Floyd算法
[转]最短路径--Dijkstra算法和Floyd算法 标签(空格分隔): 算法 本文是转载,原文在:最短路径-Dijkstra算法和Floyd算法 注意:以下代码 只是描述思路,没有测试过!! Di ...
- 图论——最短路径 Dijkstra算法、Floyd算法
1.弗洛伊德算法(Floyd) 弗洛伊算法核心就是三重循环,M [ j ] [ k ] 表示从 j 到 k 的路径,而 i 表示当前 j 到 k 可以借助的点:红色部分表示,如果 j 到 i ,i 到 ...
- 图论篇3——最短路径 Dijkstra算法、Floyd算法
最短路径 问题背景:地图上有很多个城市,已知各城市之间距离(或者是所需时间,后面都用距离了),一般问题无外乎就是以下几个: 从某城市到其余所有城市的最短距离[单源最短路径] 所有城市之间相互的最短距离 ...
随机推荐
- Python学习day44-数据库(单表及多表查询)
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- 第12章 SQL联接
第12章 SQL联接 关系数据库的3个支柱:选择.投影和联接. 两种基本的连接同等联接和非同等联接. 源表和目标表有相同的名称的列,就可以在他们之间执行自然联接,而无需指定连接列. 自然join us ...
- 如何给Apache Pig自定义UDF函数?
近日由于工作所需,需要使用到Pig来分析线上的搜索日志数据,散仙本打算使用hive来分析的,但由于种种原因,没有用成,而Pig(pig0.12-cdh)散仙一直没有接触过,所以只能临阵磨枪了,花了两天 ...
- 2019-2-13-Latex-论文elsevier,手把手如何用Latex写论文
title author date CreateTime categories Latex 论文elsevier,手把手如何用Latex写论文 lindexi 2019-02-13 10:38:20 ...
- 19-10-16-R
其实……这篇是真咕了. 反思: ××我$T1$两个小时构造$xiebi$了(虽然我觉得如果干仨小时可能行?) ……如果$T1$用时过长的话那考试多半不行…… 结果: 35 Miemeng 50 03: ...
- Android SDK上手指南:示例项目
Android SDK上手指南:示例项目 2013-12-26 15:40 核子可乐译 51CTO 字号:T | T Android SDK示例项目中的应用能够执行种种功能,例如各类用户界面元素.数据 ...
- 数据库连接池 - (druid、c3p0、dbcp)
概述: 在这里所谓的数据库连接是指通过网络协议与数据库服务之间建立的TCP连接.通常,与数据库服务进行通信的网络协议无需由应用程序本身实现. 原因有三: 实现复杂度大,需要充分理解和掌握相应的通信协议 ...
- 利用GitHub来进行团队协作开发项目
首先: 1.项目组长要在GitHub创建一个仓库 2.组长git clone仓库地址到本地 3.组长在本地克隆到的项目里面创建一个Django项目 4.在当前项目下进行git add以及git ...
- mysql load date to Hbase
一.mysql迁移数据进hbase需要配置好配置文件 用sqoop 命令进行迁移 二. 配置文件内容: import--connectjdbc:mysql://172.18.32.99:3306/te ...
- java内部类和静态内部类
看代码理解内部类,局部内部类和静态内部类 内部类代码: public class InnerTest { private static String name; private int age; pu ...
