//Dijkstra算法,到点1的最小距离
2016-06-30 21:32
225 查看
//Dijkstra算法,到点1的最小距离
#include<iostream>
#define zhf 100000000
using namespace std;
const int maxn=10001,maxm=100001;
int d[maxn],a[maxn][maxn],p[maxn];
int main(){
int i,j,k,m,n;
cin>>n>>m;
for(i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
a[x][y]=a[y][x]=z;
}
d[1]=0;
for(i=2;i<=n;i++)
d[i]=zhf;
for(i=1;i<=n;i++){
int zx=zhf;
for(j=1;j<=n;j++){
if(!p[j] && zx>d[j] ){
k=j;zx=d[j];
}
}
p[k]=1;
for(j=1;j<=n;j++)
if(!p[j] && a[k][j]!=0 && d[j]>a[k][j]+d[k]){
d[j]=a[k][j]+d[k];
}
}
for(i=1;i<=n;i++)
cout<<d[i]<<" ";
return 0;
}
/*
6 7
1 2 1
1 6 8
2 3 1
3 6 3
3 4 1
4 5 2
5 6 1
*/
#include<iostream>
#define zhf 100000000
using namespace std;
const int maxn=10001,maxm=100001;
int d[maxn],a[maxn][maxn],p[maxn];
int main(){
int i,j,k,m,n;
cin>>n>>m;
for(i=1;i<=m;i++){
int x,y,z;
cin>>x>>y>>z;
a[x][y]=a[y][x]=z;
}
d[1]=0;
for(i=2;i<=n;i++)
d[i]=zhf;
for(i=1;i<=n;i++){
int zx=zhf;
for(j=1;j<=n;j++){
if(!p[j] && zx>d[j] ){
k=j;zx=d[j];
}
}
p[k]=1;
for(j=1;j<=n;j++)
if(!p[j] && a[k][j]!=0 && d[j]>a[k][j]+d[k]){
d[j]=a[k][j]+d[k];
}
}
for(i=1;i<=n;i++)
cout<<d[i]<<" ";
return 0;
}
/*
6 7
1 2 1
1 6 8
2 3 1
3 6 3
3 4 1
4 5 2
5 6 1
*/
相关文章推荐
- 伪静态----jsp静态化和伪静态化<转载>
- java中PropertyEditor
- 菜鸟小项目_避免表单重复提交与等待页面
- Quartz 2D简介
- 杭电oj题目分类
- Linux下查看文件和文件夹大小
- iOS GPUImage之GPUImageStillCamera(2)
- 接口及java当中的异常处理
- LeetCode - 141. Linked List Cycle
- Spring常用注解
- Java学习1
- win7安装github远程提交eclipse项目
- [源码解读]position_estimator_inav_main解读(如何启动光流)
- SQL使用总结
- N语言模型(马尔科夫模型)介绍
- 河的第三条岸
- libuv学习笔记(21)
- Elasticsearch删除索引
- 对象的转型,抽象类,包的访问权限
- **利用Zxing生成二维码