Floyd算法,输出点x到y的最小距离
2016-06-30 21:51
239 查看
//Floyd算法,输出点x到y的最小距离
#include<iostream>
using namespace std;
const int maxn=10001,maxm=1000001;
#define zhf 100000000
int d[maxn][maxn],a[maxn][maxn],p[maxn];
int main(){
int i,j,k,m,n;
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)d[i][j]=d[j][i]=zhf;
for(i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
d[x][y]=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][j]>d[i][k]+d[k][j])
d[i][j]=d[i][k]+d[k][j];
int x,y;
while(cin>>x>>y){
cout<<d[x][y]<<endl;
}
return 0;
}
#include<iostream>
using namespace std;
const int maxn=10001,maxm=1000001;
#define zhf 100000000
int d[maxn][maxn],a[maxn][maxn],p[maxn];
int main(){
int i,j,k,m,n;
cin>>n>>m;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i!=j)d[i][j]=d[j][i]=zhf;
for(i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
d[x][y]=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][j]>d[i][k]+d[k][j])
d[i][j]=d[i][k]+d[k][j];
int x,y;
while(cin>>x>>y){
cout<<d[x][y]<<endl;
}
return 0;
}
相关文章推荐
- 02、相当于一个盒子永远自适应上下左右居中
- 数据结构与算法(7)— 栈的应用
- 值得推荐的C/C++框架和库 (真的很强大)
- windows 下配置 git
- 编写C语言版本的卷积神经网络CNN之四:CNN的学习及测试结果的比较
- Codeforces 432D Prefixes and Suffixes
- 伪造IP包,禁止TCP连接
- CALayer2-创建新的层
- curl 工具的使用
- Yarn产生的历史背景
- 完成端口与高性能服务器程序开发
- [JZOJ4567]nekopara
- JVM——类加载机制
- 随堂笔记(二)--内存分配函数
- android基础—新建一个Activity
- 伪造IP的一段代码
- Linux常用的shell命令汇总
- what's J2EE
- php上传文件失败解决方式
- hadoop 伪分布式start-all之后datanode丢失