最短路径(Floyed算法)
来源:互联网 发布:肖像漫画软件 编辑:程序博客网 时间:2024/05/18 02:28
#include <iostream>#include <cstdio>#define MAX 63355#define N 20typedef char Elemtype;typedef int Status;typedef struct Graph{Elemtype vexs[N]; //顶点 Status arcs[N][N]; //边的权值 int V,E; //顶点与边int path[N];}Graph; void Create_Graph(Graph &G){ printf("输入顶点与边数目:\n") ; scanf("%d%d",&G.V,&G.E); int v = G.V,e = G.E; for(int i = 0;i<v;i++){ /*初始化*/ for(int j = 0;j<v;j++) G.arcs[i][j] = MAX; } printf("输入边值:\n") ; for(int i = 0;i<v;i++){/*输入边值*/ scanf("%c",&G.vexs[i]); getchar();}printf("输入边的下标以及权值:\n") ; int w,index1,index2; for(int i = 0;i<e;i++){ /*输入权值以及边对应下标*/ scanf("%d%d%d",&index1,&index2,&w); G.arcs[index1][index2] = w;}}/*int Locate(Graph G,Elemtype x){for(int i = 0;i<G.V;i++){ if(G.vexs[i]==x) return i;}return -1;}*/ void Floyed(Graph &G){ /*Floyed算法*/for(int k = 0;k<G.V;k++){ //用于探索的点置于最外层 for(int i = 0;i<G.V;i++){for(int j = 0;j<G.V;j++){ if(G.arcs[i][j]>G.arcs[i][k]+G.arcs[k][j]) G.arcs[i][j] = G.arcs[i][k]+G.arcs[k][j]; } }}for(int i = 0;i<G.V;i++){/*矩阵形式输出各顶点的最短路径*/for(int j = 0;j<G.V;j++){if(G.arcs[i][j]!=MAX) printf("%4d",G.arcs[i][j]);} printf("\n"); } }void Path(Graph &G){while(true){//getchar();int i,j;//char a,b;printf("输入查询的顶点的下标:\n") ;scanf("%d%d",&i,&j);//printf("输入要查询的两元素:\n");//getchar();//scanf("%c%c",&a,&b);//i = Locate(G,a),j = Locate(G,b);int t = 0; for(int k = 0;k<G.V;k++){ /*输出两顶点的最短路径长*/ if(G.arcs[i][j]<MAX&&G.arcs[i][k]+G.arcs[k][j]<G.arcs[i][j]){ G.arcs[i][j] = G.arcs[i][k]+G.arcs[k][j]; }}int item = G.arcs[i][j];printf("%d->%d最短路径长为:%d\n",i,j,item); }}int main(int argc, char** argv) {Graph G;Create_Graph(G);Floyed(G);Path(G);return 0;}
阅读全文
0 0
- 最短路径(Floyed算法)
- 最短路径与Floyed算法
- 浅谈最短路径Floyed算法(c)
- 最短路径之Floyed算法
- 最短路径之Floyed-Warshall算法
- Floyed算法实现最短路径
- Floyed算法求两点之间的最短路径
- ACM-Floyed算法求两点之间的最短路径
- 图的最短路径Dijkstra+Floyed算法
- POJ 2253 Frogger 最短路径 Floyed-Warshall算法
- ZOJ 1082 (最短路径 Floyed)
- 最短路径(Dijikstra和Floyed)
- poj 1125 (floyed 最短路径)
- 最短路径 dijkstra bellford floyed
- 【模板】最短路径(Floyed&SPFA )
- 图论算法----最短路径Floyed算法和Dijkstra算法详解
- 弗洛伊德算法Floyed(求各顶点间最短路径):可打印最短路径
- 【图】最短路径——Floyed算法和Dijkstra算法
- C++测试驱动开发环境搭建--笔记
- golang中可变长参数的使用
- Window 7下QT5.9.2安装、QTCreator调试器配置
- 分布式架构
- C++反汇编第二讲,不同作用域下的构造和析构的识别
- 最短路径(Floyed算法)
- oracle is not in the sudoers file. This incident will be reported.
- java hibernate 报错 org.hibernate.hql.internal.ast.QuerySyntaxException: Unable to locate class
- Android双击返回退出应用的写法
- Android沉浸式状态栏
- 嵌入式软件可靠性设计
- python3 regex exercise
- 【C++】链接器及undefined reference的秘密
- 集体开发之代码风格一致