最短路dijkstra,floyd
来源:互联网 发布:剑三冷艳军娘捏脸数据 编辑:程序博客网 时间:2024/05/22 14:20
两点之间的最小距离,dijkstra是计算某个点到其余点的最短路径,而floyd计算任意两点间最短路
感觉两个差不多,对于某两个点a,b之间 的距离,找到一个点c,比较原距离是否大于ac的距离加cb的距离之和,我感觉我还没有深刻的理解,总是觉得会出什么疏漏,然而也找不到解决的方法,摊手,以后再多加理解
两道题输入格式是一样的,参考了hdu2112
/*************************dijkstra
//
// main.cpp
// dijkstra
//
// Created by Mr.Xue on 17/1/18.
// Copyright © 2017年 Mr.Xue. All rights reserved.
//
#include <iostream>
using namespacestd;
#define INF 10000
int a[1000][1000],n,d[INF];
void Init()
{
for(int i=0;i<=150;i++)
{
for(int j=0;j<150;j++)
{
if(i==j)
a[i][j]=0;
else
a[i][j]=INF;
}
}
}
void dijkstral()
{
int vis[INF];
memset(vis,0,sizeof(vis));
for(int i=1;i<=n;i++)
d[i]=INF;
d[1]=0;
for(int i=1;i<=n;i++)
{
int temp=INF,x;
for(int j=1;j<=n;j++)
{
if(!vis[j]&&d[j]<temp)
{
temp=d[j];
x=j;
//printf("%d ",x);
}
}
vis[x]=1;
if(temp==INF)
break;
for(int j=1;j<=n;j++)
{
if(d[j]>d[x]+a[x][j])
d[j]=d[x]+a[x][j];
//printf("%d ",d[j]);
}
}
}
int main()
{
int i,j,s,e,w;
while(~scanf("%d",&n)&&n!=-1)
{
Init();
scanf("%d %d",&s,&e);
for(int k=0;k<n;k++)
{
scanf("%d %d %d",&i,&j,&w);
a[i][j]=a[j][i]=w;
}
dijkstral();
for(i=1;i<=n;i++)
printf("%d ",d[i]);
printf("\n");
}
return0;
}
/*
6
1 2
1 3 60
1 4 30
3 5 20
4 6 10
1 6 50
6 2 10
*/
/**********************/
// main.cpp
// floyd
//
// Created by Mr.Xue on 17/1/18.
// Copyright © 2017年 Mr.Xue. All rights reserved.
//
#include <iostream>
using namespacestd;
#define INF 10000
int a[1000][1000],n,d[INF];
void Init()
{
for(int i=0;i<=150;i++)
{
for(int j=0;j<150;j++)
{
if(i==j)
a[i][j]=0;
else
a[i][j]=INF;
}
}
}
void floyd()
{
for(int k=1;k<=n;k++)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[i][j]>a[i][k]+a[k][j])
a[i][j]=a[i][k]+a[k][j];
}
}
}
}
int main()
{
int i,j,s,e,w;
while(~scanf("%d",&n)&&n!=-1)
{
Init();
scanf("%d %d",&s,&e);
for(int k=0;k<n;k++)
{
scanf("%d %d %d",&i,&j,&w);
a[i][j]=a[j][i]=w;
}
floyd();
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
return0;
}
- 最短路dijkstra,floyd
- 最短路Floyd、Dijkstra
- hdu2544最短路(floyd)(dijkstra)
- 最短路 spfa, dijkstra, Floyd
- 最短路模版 【dijkstra】【floyd】
- 最短路【dijkstra】【floyd 】【spfa】
- poj1847Tram 最短路 floyd dijkstra
- hdu 2544 最短路 (dijkstra/floyd/spfa)
- HDU 2544 最短路 dijkstra floyd
- [dijkstra/SPFA/floyd]HDU 2544最短路
- hdu2544 最短路(Floyd,Dijkstra算法)
- 【最短路三算法】Floyd,Dijkstra,SPFA.
- 最短路 Dijkstra 和 Floyd 算法
- POJ2253 Frogger -DIJKSTRA || FLOYD最短路练习
- 最短路:Dijkstra算法和Floyd算法
- 最短路模板 Dijkstra+Floyd+SPFA
- HDU2544---最短路(dijkstra&&floyd&&spfa)
- 最短路floyd与dijkstra浅析
- IOS开发-UIView之动画效果的实现方法(合集)
- Javascript中的异常处理
- input+select,输入+选择
- Error Domain=com.alamofire.error.serialization.response Code=-1016 image/jpeg application/octet-stre
- 不用任何的算数运算符实现加法
- 最短路dijkstra,floyd
- 关于url解析
- 欢迎使用CSDN-markdown编辑器
- Android系统权限列表查询
- PHP中的i++与++i的区别及效率
- mysql-命令行工具
- 安卓面试基本技能之---单例模式
- windows 系统下protobuf-2.6.1的安装说明
- 腾讯学院运营课程第七天