带权图
1. 单源点 最短路径问题: Dijkstra,(可用 priority_queue 优化)
2. 任意两点最短路径问题:Floyd

  1. 邻接矩阵 的 Dijkstra
    **算法:
    第一步:在S-V中,选择一个d[v]最小的点v,将v加入S,d[v]为它的最终值
    第二步:在S-V中,找到一个待更新最短路径的点u(因为S中添入了V),更新u的最短路径(暂时的) 和 前置点**
#include<iostream>
using namespace std;#define MAX 10000  //定义无穷大
#define N 100
int path[N];struct Graph{int vexnum;int arcnum;int arcs[N][N];char vexs[N];
};int Loc(Graph G,char a)
{for(int i=1;i<=G.vexnum;i++){if(G.vexs[i] == a){return i;}}
}void Input(Graph &G)
{cin>>G.vexnum>>G.arcnum;for(int i=1;i<=G.vexnum;i++){cin>>G.vexs[i];}for(int i=1;i<=G.vexnum;i++){for(int j=1;j<=G.vexnum;j++){G.arcs[i][j] = MAX;}}for(int i=1;i<=G.arcnum;i++){int x,y,w;char a,b;cin>>a>>b>>w;x = Loc(G,a);y = Loc(G,b);G.arcs[x][y] = w;}
}void OutPath(Graph G, int v)
{if(path[v] == 0){cout<<G.vexs[v]<<" ";return ;}else{OutPath(G,path[v]);cout<<G.vexs[v]<<" ";}
} // 求a->b的最短路径
void Dijkstra(Graph &G,char a,char b)
{int s[N];int d[N];int v0 = Loc(G,a);// 初始化for(int i=1;i<=G.vexnum;i++){s[i] = 0;d[i] = G.arcs[v0][i];if(G.arcs[v0][i] != MAX){path[i] = v0;       }else{path[i] = 0;}}s[v0] = 1;d[v0] = 0;for(int i=1;i<=G.vexnum-1;i++){// 在 S-V 中选择一点 u ,d[u]最小    ----> 将 u 加入s int min = MAX;int v,j;for(j=1;j<=G.vexnum;j++){if(s[j]==0){if(d[j] < min){min = d[j];v = j;}} }// 得到 v s[v] = 1;//u 为S-v 中的点,若d[u] > d[v]+arcs[v][u], 则d[u] = d[v] + arcs[v][u],path[u] = v; for(j=1;j<=G.vexnum;j++){if(s[j] == 0){if(d[j] > d[v]+G.arcs[v][j]){path [j] = v;d[j] = d[v] + G.arcs[v][j];}}}}int vt = Loc(G,b);cout<<d[vt]<<endl;OutPath(G,vt);cout<<endl;
}int main()
{Graph G;Input(G);char a,b;cin>>a>>b;Dijkstra(G,a,b);return 0;
}

shortest path problem相关推荐

  1. hdu 3631 Shortest Path(Floyd)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3631 Shortest Path Time Limit: 3000/1000 MS (Java/Oth ...

  2. P - The Shortest Path in Nya Graph HDU - 4725

    P - The Shortest Path in Nya Graph HDU - 4725 最短路 不是 每两个点之间按层数设置边权 + 额外边权 TLE 是 相邻两层之间设置边权 + 额外边权 需注 ...

  3. [CF843D]Dynamic Shortest Path

    [CF843D]Dynamic Shortest Path 题目大意: 给定一个带权有向图,包含\(n(n\le10^5)\)个点和\(m(m\le10^5)\)条边.共\(q(q\le2000)\) ...

  4. zoj 2760 How Many Shortest Path 最大流

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1760 Given a weighted directed graph ...

  5. OSPF(Open Shortest Path First开放式最短路径优先)

    **协议** OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(a ...

  6. 4kyu Path Finder #2: shortest path

    4kyu Path Finder #2: shortest path 题目背景: Task You are at position [0, 0] in maze NxN and you can onl ...

  7. AOJ GRL_1_C: All Pairs Shortest Path (Floyd-Warshall算法求任意两点间的最短路径)(Bellman-Ford算法判断负圈)

    题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_C All Pairs Shortest Path Input ...

  8. AOJ GRL_1_B: Shortest Path - Single Source Shortest Path (Negative Edges) (Bellman-Frod算法求负圈和单源最短路径)

    题目链接: http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_B Single Source Shortest Path ( ...

  9. AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)

    题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_A Single Source Shortest Path In ...

  10. zoj How Many Shortest Path

    How Many Shortest Path 题目: 给出一张图,求解最短路有几条.处理特别BT.还有就是要特别处理map[i][i] = 0,数据有不等于0的情况! 竟然脑残到了些错floyd! ! ...

最新文章

  1. PL/SQL的快捷键设置
  2. idea实现抽象类的所有抽象方法_深入理解Java的接口和抽象类
  3. BlogEngine(4)---Widget小部件
  4. VTK:突出坏细胞用法实战
  5. pythonwhile循环实战教程_Python入门丨for循环和while循环
  6. 通过shell脚本检测MySQL服务信息
  7. Unity3D 场景编辑器扩展学习笔记-EditorWindow
  8. ul阻燃标准有几个等级_UL阻燃等级说明
  9. 虚拟机您的计算机无法启动,一键解决win10虚拟机无法启动的问题
  10. 路由器服务器已停止响应,排除路由器挂起故障
  11. 移动端APM网络监控与优化实践
  12. 【Wechat】微信支付APIV3(商户) 接入批量转账到零钱
  13. plsql 英文版 修改字体,工具栏大小
  14. Havel-Hakimi定理(判断一个度序列是否可图)
  15. 安卓图片处理Picasso的解析使用
  16. 《逃离禁闭岛》游戏评测:不一样的密室逃脱
  17. Hbase从入门到入坑
  18. ubuntu 20.04 安装 keepass【解决中文乱码】
  19. Python 实例方法、类方法和静态方法
  20. 视频直播技术——编码和封装

热门文章

  1. mysql bit_or() bit_count()函数
  2. pr生成html文件格式,pr支持哪些格式
  3. springboot获取active_springboot 2.3.0+activeRecord获取对象报类型转换错误
  4. 外部方法调用内部_实战经验:通过类成员函数指针实现类方法调用
  5. 为什么属龙的有二婚命_88属龙的一生婚姻状况详细解析
  6. return的用法 java_Java中return用法.
  7. mysql查询一张表中一共有多少条数据
  8. python integer函数_python - Floor函数消除了Integer科学符号,Python - 堆栈内存溢出
  9. oracle mrp mps mds 的table关联,ORACLE中的计划-Forecast/MDS/MPS/MRP(转)
  10. sensor曝光量和曝光行的区别_求教:关于lcd和sensor的几个问题和讨论