您的位置:首页 > 其它

//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

*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: