zoukankan      html  css  js  c++  java
  • dijkstra

    寻找从源结点到其他点之间的最短距离。

    把给出的结点分成两组,一组a刚开始为空,另一组b为全部节点,dis[i]记录从源点到i结点的距离,同样当所有操作结束后dis[i]就是到达源点的最短距离啦,每次更新的时候dis[i]的距离都会缩小。

     1 #include<stdio.h>
     2 #include<iostream>
     3 #include<algorithm>
     4 #include<string.h>
     5 using namespace std;
     6 const int inf=0x3f3f3f3f;
     7 int e[100][100],vis[100],dis[100];
     8 int main()
     9 {
    10     int m,n;
    11     int a,b,c;
    12     while(cin>>n>>m){
    13 
    14 
    15             ///初始化
    16             for(int i=1;i<=n;i++){
    17                 for(int j=1;j<=n;j++){
    18                         if(i==j)e[i][j]=0;
    19                 else
    20                     e[i][j]=inf;
    21                 }
    22             }
    23 
    24 
    25         for(int i=1;i<=m;i++){
    26             cin>>a>>b>>c;
    27             e[a][b]=c;///c为边a到b的距离
    28             vis[i]=0;
    29         }
    30         for(int i=1;i<=n;i++)
    31             dis[i]=e[1][i];
    32         vis[1]=1;///此处的样例代码我们假设1为源点
    33 
    34         int u;
    35         for(int k=1;k<=n-1;k++){///n个结点要遍历n-1次
    36             int minn=inf;
    37 ///每次都查找距离1最近的结点
    38             for(int i=1;i<=n;i++){
    39                 if(minn>dis[i]&&vis[i]==0){
    40                         minn=dis[i];
    41                           u=i;
    42                 }
    43             }
    44 vis[u]=1;
    45             for(int v=1;v<=n;v++){
    46             if(e[u][v]<inf){
    47                 if(dis[v]>dis[u]+e[u][v])
    48                     dis[v]=dis[u]+e[u][v];
    49             }
    50             }
    51         }
    52         for(int i=1;i<=n;i++)
    53             cout<<dis[i]<<" ";
    54     }
    55 
    56 }
    View Code
    你若盛开,清风自来...
  • 相关阅读:
    poj2229 Sumsets (递推)
    hihocoder1148 February 29(区间闰年计数)
    sort函数比较cmp写法
    字符串忽略大小写
    地形
    启用和禁用warning
    AppStore SDK
    NGUI List优化
    ETC1
    加载
  • 原文地址:https://www.cnblogs.com/shangjindexiaoqingnian/p/5866309.html
Copyright © 2011-2022 走看看