最短路径Floyd算法
来源:互联网 发布:数据挖掘软件容易使用 编辑:程序博客网 时间:2024/06/03 20:30
#include<stdio.h>struct Dist{ int length; int pre;};typedef struct Dist dist[4][4];struct ArcCell{ int data;};typedef struct ArcCell arccell;typedef struct ArcCell arc[4][4];typedef struct { int a[4]; arc ar; int vexnum; int arcnum;}MGraph;MGraph CreateMGraph(MGraph m){ scanf("%d%d",&m.vexnum,&m.arcnum); int i,j; for(i=0;i<m.vexnum;i++) scanf("%d",&m.a[i]); for(i=0;i<m.vexnum;i++) for(j=0;j<m.vexnum;j++) m.ar[i][j].data = 10; for(i=0;i<m.arcnum;i++){ int v1,v2,w; scanf("%d%d%d",&v1,&v2,&w); m.ar[v1][v2].data = w; } return m;}void Floyd(MGraph m,dist d){ int i,j,k; for(i=0;i<m.vexnum;i++) for(j=0;j<m.vexnum;j++){ d[i][j].length = m.ar[i][j].data; d[i][j].pre = i; } for(k=0;k<m.vexnum;k++) for(i=0;i<m.vexnum;i++) for(j=0;j<m.vexnum;j++){ if(d[i][j].length>d[i][k].length+d[k][j].length){ d[i][j].length = d[i][k].length+d[k][j].length; d[i][j].pre = k; } }}void pre(dist d,int i ,int j){//打印中间节点 if(i!=d[i][j].pre){ printf("%d",d[i][j].pre); j = d[i][j].pre; pre(d,i,j); }}int main(){ MGraph m; MGraph n = CreateMGraph(m); dist d; Floyd(n,d); pre(d,0,1); //printf("%d",n.ar[1][2].data);}
- 动态规划的典型实例
阅读全文
0 0
- Floyd最短路径算法
- 最短路径(Floyd算法)
- 最短路径 floyd算法
- 最短路径--Floyd算法
- Floyd最短路径算法
- Floyd最短路径算法
- 最短路径Floyd算法
- 最短路径 Floyd算法
- Floyd最短路径算法
- 最短路径floyd算法
- 最短路径(floyd算法)
- Floyd最短路径算法
- 【最短路径】Floyd算法
- Floyd最短路径算法
- 最短路径--Floyd算法
- Floyd最短路径算法
- 最短路径-Floyd算法
- 最短路径-floyd算法
- HDU6178 Monkeys【DFS】
- Atitit 减少财政支出----普通人如何蹭政府补贴措施 attilax大总结.docx
- Atitit 减少财政支出----获取商家商业机构的补贴措施 attilax大总结.docx
- Atitit 每个人都应该实施的互联网金融战略 attilax总结
- 数组排序算法
- 最短路径Floyd算法
- Atitit 财政支出减少之道---------蹭银行与金融机构的补贴之道
- jetty9.4.5安装部署文档
- 2017阿里校招笔试附加题2 菜鸟仓库货架编号问题
- resin4.0.53安装部署文档
- [PAT甲级]1012. The Best Rank (25)(最好排名)
- 它可以通过前述的 Kafka, Flume等数据源
- android ExpandableListView三级菜单的使用
- 字符串问题---最小包含子串的长度