hiho第二十四周
2016-07-03 23:34
148 查看
最短路之Floyd算法
代码如下:
#include <bits/stdc++.h>
#define maxn 105
using namespace std;
int w[maxn][maxn];
int main()
{
int n, m, a, b, c;
memset( w, 0x3f, sizeof( w));
scanf( "%d%d", &n, &m);
for ( int i = 1; i <= n; i++)
w[i][i] = 0;
while ( m--){
scanf( "%d%d%d", &a, &b, &c);
w[a][b] = w[b][a] = min( w[a][b], c);
}
for ( int i = 1; i <= n; i++){
for ( int j = 1; j <= n; j++){
for ( int k = 1; k <= n; k++)
w[j][k] = min( w[j][k], w[j][i] + w[i][k]);
}
}
for ( int i = 1; i <= n; i++){
for ( int j = 1; j < n; j++){
printf( "%d ", w[i][j]);
}
printf( "%d\n", w[i]
);
}
return 0;
}
代码如下:
#include <bits/stdc++.h>
#define maxn 105
using namespace std;
int w[maxn][maxn];
int main()
{
int n, m, a, b, c;
memset( w, 0x3f, sizeof( w));
scanf( "%d%d", &n, &m);
for ( int i = 1; i <= n; i++)
w[i][i] = 0;
while ( m--){
scanf( "%d%d%d", &a, &b, &c);
w[a][b] = w[b][a] = min( w[a][b], c);
}
for ( int i = 1; i <= n; i++){
for ( int j = 1; j <= n; j++){
for ( int k = 1; k <= n; k++)
w[j][k] = min( w[j][k], w[j][i] + w[i][k]);
}
}
for ( int i = 1; i <= n; i++){
for ( int j = 1; j < n; j++){
printf( "%d ", w[i][j]);
}
printf( "%d\n", w[i]
);
}
return 0;
}
相关文章推荐
- 国服最强王者之最良心王者
- cache源码分析三 evacuate机制的实现
- Lucene创建索引入门案例
- IllegalArgumentException: Unable to locate adbAndroid
- Git使用命令
- css3表达式得到焦点即失去焦点
- eventsystem源码分析 多线程框架
- cache源码分析二 读写逻辑分析
- SSH登陆慢的问题
- Linux安装配置apache
- SSH登陆慢的问题
- 1.2 面试问题整理 : 软件测试的流程
- Android获取手机联系人listView展示
- 进程、程序、作业 的区别
- squid存储机制
- request的setAttribute()怎么用的?
- LayoutInflater(四)
- 常见Java数据结构&优缺点
- 在MAPGIS中,怎么投影多条线段?
- JSP三个指令及9个内置对象