【Algothrim】 FLoyd
来源:互联网 发布:软件的性能指标 编辑:程序博客网 时间:2024/05/17 23:40
思想:
通过一个图的权值矩阵求出它的每两点间的最短路径矩阵。
状态转移方程: map[i,j]:=min{map[i,k]+map[k,j],map[i,j]};
核心代码:
for(i=1;i<=L;i++)
{
for(j=1;j<=L;j++)
{
for(k=1;k<=L;k++)
{
if(dist[i][j]>dist[i][k]+dist[k][j])
dist[i][j]=dist[i][k]+dist[k][j];
}
}
}
完整代码:
#include<stdio.h>
#include<stdlib.h>
#define max 1000000000
int
d[1000][1000],path[1000][1000];
int
main()
{
int
i,j,k,m,n;
int
x,y,z;
scanf
(
"%d%d"
,&n,&m);
for
(i=1;i<=n;i++)
for
(j=1;j<=n;j++){
d[i][j]=max;
path[i][j]=j;
}
for
(i=1;i<=m;i++)
{
scanf
(
"%d%d%d"
,&x,&y,&z);
d[x][y]=z;
d[y][x]=z;
}
for
(k=1;k<=n;k++)
for
(i=1;i<=n;i++)
for
(j=1;j<=n;j++)
{
if
(d[i][k]+d[k][j]<d[i][j]){
d[i][j]=d[i][k]+d[k][j];
path[i][j]=path[i][k];
}
}
for
(i=1;i<=n;i++)
for
(j=1;j<=i;j++)
if
(i!=j)
printf
(
"%d->%d:%d\n"
,i,j,d[i][j]);
int
f,en;
scanf
(
"%d%d"
,&f,&en);
while
(f!=en){
printf
(
"%d->"
,f);
f=path[f][en];
}
printf
(
"%d\n"
,en);
return
0;
}
真的想说图灵奖颁给他只是实至名归!
20世纪50年代初期美国经济不太景气,找工作比较困难,因学习文学而没有任何专门技能的弗洛伊德在就业上遇到很大麻烦,无奈之中到西屋电气公司当了二年计算机操作员,在IBM650机房值夜班。到1978年就获得了图灵奖。大写的牛!
0 0
- 【Algothrim】 FLoyd
- 【Algothrim】节日
- 【Algothrim】 烘干机
- 【Algothrim】Dijkstra 实例一
- 【Algothrim】 动态规划
- 【Algothrim】 strcmp strcpy
- 【Algothrim】并查集
- 【Algothrim】堆排序
- 【Algothrim】Ant Teams
- 【Algothrim】全排列
- 【Algothrim】 集合竞价
- 【Algothrim】Christmas Gifts
- 【Algothrim】 算法技巧 -- 滚动数组
- floyd
- Floyd
- Floyd
- floyd
- floyd
- 设计模式-11种行为型【占坑中】
- EasyUI(二)
- Mono.Cecil简介与示例
- CSS隐藏input光标
- PHP转码
- 【Algothrim】 FLoyd
- 从源码角度彻底分析layout_weight使用
- 根据PID号判断所属的容器
- 带有安全认证的webservice
- Google Protocol Buffer 的使用和原理
- 常用Oracle问题诊断sql脚本
- nodejs系列学习:http请求html/css/js-----(二)
- git学习笔记(一)
- hbase的架构