最短路径

来源:互联网 发布:maven实战源码 许晓斌 编辑:程序博客网 时间:2024/06/15 06:12
////  main.cpp//  最短路径////  Created by mac on 17/6/9.//  Copyright © 2017年 mac. All rights reserved.//#include <iostream>using namespace std;int main(int argc, const char * argv[]) {    int a[10][10],n,m,i,j;    int x,y,val;    int vals[10];    int cf[10];    int inf=999999;    //n 表示 多少点  m表示多少边的条数    while(scanf("%d%d",&n,&m)!=EOF)    {    //初始化    for(i=0;i<n;i++)        for(j=0;j<n;j++)            if(i==j) a[i][j]=0;            else a[i][j]=inf;    for(i=0;i<m;i++)    {        cin>>x>>y>>val;        a[x][y]=val;        a[y][x]=val;    }    for(i=0;i<n;i++)    vals[i]=a[0][i];        memset(cf,0,sizeof(cf));    //起点是0    cf[0]=1;    x=0;    y=0;    int min;    for(i=0;i<n-1;i++)    {        min=inf;        for(j=0;j<n;j++)        {            if(a[x][j]<min&&cf[j]==0)            {                min=a[x][j];                y=j;            }        }        cf[y]=1;        x=y;        for(int k=0;k<n;k++)        {            if(vals[k]>vals[y]+a[y][k])                vals[k]=vals[y]+a[y][k];        }    }    for(i=0;i<n;i++)        cout<<vals[i]<<' ';        cout<<endl;    }    return 0;}


输入:

6 90 1 60 2 31 2 23 1 52 3 32 4 43 4 25 3 35 4 5


输出:

0 5 3 6 7 9 




原创粉丝点击