Dijkstra算法模板
2017-05-24 19:12
197 查看
#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
*/
相关文章推荐
- Dijkstra算法模板
- Dijkstra算法模板
- Dijkstra算法模板
- dijkstra算法模板及其用法
- Dijkstra算法模板
- Dijkstra算法模板
- dijkstra算法模板 -- 最短路
- 最短路模板:使用priority_queue实现的Dijkstra算法
- dijkstra算法(单源最短路)模板
- 有向图的Dijkstra算法实现模板
- HDU 2544 最短路(我的dijkstra算法模板、SPAFA算法模板)
- [置顶] Dijkstra算法---模板
- Dijkstra算法模板
- Dijkstra算法(邻接阵)模板
- (模板) Dijkstra算法(priority_queue优化)
- 最短路径 自己写的一个很简单的模板 dijkstra算法
- dijkstra算法模板
- Dijkstra算法---单源最短路(基础模板)
- 做了一道跑大数据的最短路挂了,基于vector的二维模拟邻接表实现Dijkstra算法(*【模板】)
- Dijkstra算法第二套模板程序