之后的题解偏重有用/总结性质,尽量理解算法本身而不是题,时间复杂度什么的也能够放放。

非常久之前做过这个题,当时使用dijkstra做的,关于几个最短路算法,分类的话能够分为下面几种。

1、单源最短路:已知起点(终点),计算从源点到其它各个顶点的最短路径长度。

典型算法:Dijkstra,Bellman-Ford(能够算负的,比較慢),spfa(负权能用,加了松弛操作,速度比較炸天)

2、全局最短路:从一点到还有一点,典型如Floyd,A*启示式算法。

又一次用floyd写一遍:

#include <iomanip>
#include <string.h>
#include <iostream>
using namespace std; const int INF=0x3f3f3f3f;
int map[305][305];
int path[305][305];
bool visited[10005];
int prev[10005];
int waypoint; void clearmap()
{
for (int i=0;i<105;i++)
{
for (int j=0;j<105;j++)
{
map[i][j]=INF;
}
}
memset(path,INF,sizeof(path));
memset(prev,0,sizeof(prev));
memset(visited,0,sizeof(visited));
} void floyd()
{
for(int k=0;k<waypoint;k++)
{
for(int i=0;i<waypoint;i++)
{
for(int j=0;j<waypoint;j++)
{
if(map[i][k]!=INF && map[k][j]!=INF)
{
if(map[i][j]>map[i][k]+map[k][j])
{
map[i][j]=map[i][k]+map[k][j];
path[i][j]=path[k][j];
}
} }
}
}
} int main()
{
int route;
while (cin>>waypoint>>route)
{
clearmap();
for(int i=0;i<route;i++)
{
int a,b,dis;
cin>>a>>b>>dis;
if(map[a][b]>dis)
{
map[a][b]=map[b][a]=dis;
} }
floyd();
int start,end;
cin>>start>>end; if(start==end)
{
cout<<0<<endl;
}
else if(map[start][end]!=INF)
cout<<map[start][end]<<endl;
else
cout<<"-1"<<endl; } return 0;
}

最新文章

  1. GUID生成器
  2. java入门第三步之数据库连接
  3. compass Sprites 雪碧图 小图片合成[Sass和compass学习笔记]
  4. Leetcode 69 Sqrt(x) 二分查找(二分答案)
  5. CSS3 旋转代码备忘
  6. linux poll
  7. 关于android在Service中弹出Dialog对话框
  8. Android用户界面 UI组件--TextView及其子类(一) TextView
  9. Kernel PCA 原理和演示
  10. XmlDocument,XDocument相互转换
  11. 点击空白处隐藏指定dom元素(纯javascript方法)
  12. DDOS的攻击原理和如何防护网站和游戏恶意攻击
  13. Cassanfra、Hbase和MongoDB的选取
  14. JAVA面向对象-----面向对象(基础预备知识汇总)
  15. 【三】Eureka服务注册与发现
  16. matlab中输入x. 与x的区别
  17. suoi46 最大和和 (线段树)
  18. P3507 GRA-The Minima Game
  19. ios成长之每日一遍(day 2)
  20. d3js layout 深入理解

热门文章

  1. 字节流复制mp3文件(带缓冲区)
  2. 基于RSA securID的Radius二次验证java实现(PAP验证方式)
  3. php随笔7-thinkphp OA系统 JS 文本框输入实时控制字数
  4. CentOS6.5安装elasticsearch+logstash+kibana
  5. JS 随记
  6. 一致性算法--Raft
  7. &quot;No appenders found for logger&quot; and &quot;Please configure log4j properly&quot;
  8. JavaEE Tutorials (7) - 在会话bean中使用异步方法调用
  9. 数据结构——链表(linkedlist)
  10. iOS中的图像处理(一)——基础滤镜