dijkstra算法实现
来源:互联网 发布:软件体系结构的组成 编辑:程序博客网 时间:2024/05/16 16:08
#include <iostream>
using namespace std;
const int N=10;
const int data_max=100000000;
int graph[N][N];
int distances[N];
int front[N];
void dijkstra(int graph[N][N],int k)
{
bool visited[N];
int i;
for(i=0;i<N;i++)
visited[i]=false;
visited[k]=true;
front[k]=-1;
int num=1;
for(i=0;i<N;i++)
{
distances[i]=graph[k][i];
front[i]=k;
}
while(num<N)
{
int min=data_max,start;
for(i=0;i<N;i++)
{
if(distances[i]<min&&!visited[i])
{
min=distances[i];
start=i;
}
}
visited[start]=true;
num++;
front[start]=k;
for(i=0;i<N;i++)
{
if(!visited[i]&&graph[start][i]<data_max&&distances[start]+graph[start][i]<distances[i])
{
distances[i]=distances[start]+graph[start][i];
front[i]=start;
}
}
}
}
int main()
{
freopen("input.txt","r",stdin);
int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
graph[i][j]=data_max;
for(i=0;i<N;i++)
graph[i][i]=0;
int m;
cin>>m;
int x,y,d;
for(i=0;i<m;i++)
{
cin>>x>>y>>d;
graph[x-1][y-1]=graph[y-1][x-1]=d;
}
int k;
cin>>k;
dijkstra(graph,k-1);
for(i=0;i<N;i++)
cout<<distances[i]<<endl;
return 0;
}
- Dijkstra算法的实现
- dijkstra算法实现
- Dijkstra算法(c++实现)
- Dijkstra算法(c++实现)
- Dijkstra算法实现
- Dijkstra算法实现
- Dijkstra算法C#实现
- Dijkstra算法 ---java实现
- dijkstra算法JAVA实现
- Dijkstra算法实现
- Java实现Dijkstra算法
- DIJKSTRA算法-java实现
- Dijkstra算法Java实现
- Dijkstra算法的实现
- Dijkstra算法java实现
- C++实现Dijkstra算法
- dijkstra算法的实现。
- Dijkstra算法java实现
- 行列互转_整理贴3
- Toplink-JPA/zhuan
- jsp 通过打包下载多个文件
- 创新是全方位
- 套接字模式
- dijkstra算法实现
- j2me网上直播第一课
- OSGi 4.2 规范发布了
- 09秋季IDF:星光闪耀Moblin技术期待
- 基于LPC2400系列ARM的NOR FALSH (SST39VF6401B)的文件系统的设计
- RTP/RTCP流媒体数据还原技术
- CSDN的一亩三分地
- Linux中fdisk分区使用方法
- 英特尔改进芯片平台猛攻移动市场