Dijkstra算法模板
来源:互联网 发布:java时间字符串格式化 编辑:程序博客网 时间:2024/05/18 05:49
#include <stdio.h>
int main()
{
int e[10][10],dis[10],book[10],i,j,n,m,t1,t2,t3,u,v,min;
int inf=99999999; //用inf(infinity的缩写)存储一个我们认为的正无穷值
//读入n和m,n表示顶点个数,m表示边的条数
scanf("%d %d",&n,&m);
//初始化
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j) e[i][j]=0;
else e[i][j]=inf;
//读入边
for(i=1;i<=m;i++)
{
scanf("%d %d %d",&t1,&t2,&t3);
e[t1][t2]=t3;
}
//初始化dis数组,这里是1号顶点到其余各个顶点的初始路程
for(i=1;i<=n;i++)
dis[i]=e[1][i];
//book数组初始化
for(i=1;i<=n;i++)
book[i]=0;
book[1]=1;
//Dijkstra算法核心语句
for(i=1;i<=n-1;i++)
{
//找到离1号顶点最近的顶点
min=inf;
for(j=1;j<=n;j++)
{
if(book[j]==0 && dis[j]<min)// 找最小的,等于0是没录进来
{
min=dis[j];
u=j;
}
}
book[u]=1;
for(j=1;j<=n;j++)
{
if(e[u][j]<inf)//有路
{
if(dis[j]>dis[u]+e[u][j])
dis[j]=dis[u]+e[u][j];
}
}
}
//输出最终的结果
for(i=1;i<=n;i++)
printf("%d ",dis[i]);
//getchar();
//getchar();
return 0;
}/*
6 9
1 2 1
1 3 12
2 3 9
2 4 3
3 5 5
4 3 4
4 5 13
4 6 15
5 6 4
0 1 8 4 13 17
*/
int main()
{
int e[10][10],dis[10],book[10],i,j,n,m,t1,t2,t3,u,v,min;
int inf=99999999; //用inf(infinity的缩写)存储一个我们认为的正无穷值
//读入n和m,n表示顶点个数,m表示边的条数
scanf("%d %d",&n,&m);
//初始化
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(i==j) e[i][j]=0;
else e[i][j]=inf;
//读入边
for(i=1;i<=m;i++)
{
scanf("%d %d %d",&t1,&t2,&t3);
e[t1][t2]=t3;
}
//初始化dis数组,这里是1号顶点到其余各个顶点的初始路程
for(i=1;i<=n;i++)
dis[i]=e[1][i];
//book数组初始化
for(i=1;i<=n;i++)
book[i]=0;
book[1]=1;
//Dijkstra算法核心语句
for(i=1;i<=n-1;i++)
{
//找到离1号顶点最近的顶点
min=inf;
for(j=1;j<=n;j++)
{
if(book[j]==0 && dis[j]<min)// 找最小的,等于0是没录进来
{
min=dis[j];
u=j;
}
}
book[u]=1;
for(j=1;j<=n;j++)
{
if(e[u][j]<inf)//有路
{
if(dis[j]>dis[u]+e[u][j])
dis[j]=dis[u]+e[u][j];
}
}
}
//输出最终的结果
for(i=1;i<=n;i++)
printf("%d ",dis[i]);
//getchar();
//getchar();
return 0;
}/*
6 9
1 2 1
1 3 12
2 3 9
2 4 3
3 5 5
4 3 4
4 5 13
4 6 15
5 6 4
0 1 8 4 13 17
*/
阅读全文
0 0
- Dijkstra算法模板
- Dijkstra算法模板
- Dijkstra算法模板
- Dijkstra算法模板
- 朴素Dijkstra算法模板
- Dijkstra算法模板
- Dijkstra算法【模板】
- dijkstra算法模板
- Dijkstra算法 模板
- Dijkstra算法模板
- dijkstra的算法模板
- Dijkstra算法模板
- Dijkstra算法模板
- Dijkstra算法模板
- Dijkstra算法---模板
- Dijkstra算法几大模板
- dijkstra算法模板可优化
- dijkstra算法模板改进版
- 11111
- spring事务注解不生效
- main函数参数的解析及应用
- Application Loader登陆失败原因
- iOS大型项目解耦方案有难度?BeeHive设计优化来帮助
- Dijkstra算法模板
- 华为FusionStage PaaS平台技术探秘之微服务运行与治理框架
- 数据库索引失效问题
- FPGA上电后IO的默认状态
- virtualbox ubuntu /home目录扩充容量
- ES6学习
- oracle常用基础知识详解(用户、角色、权限管理)
- ios 图片加点击事件
- Android Studio 打包强制国际化解决方案