zoukankan      html  css  js  c++  java
  • 【算法系列学习】Dijkstra单源最短路 [kuangbin带你飞]专题四 最短路练习 A

    https://vjudge.net/contest/66569#problem/A

    http://blog.csdn.net/wangjian8006/article/details/7871889

    邻接矩阵实现的单源最短路

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<string>
     4 #include<cstring>
     5 #include<algorithm>
     6 #include<cmath>
     7 #include<utility>
     8 using namespace std;
     9 const int maxn=1e3+5;
    10 const int inf=0x3f3f3f3f;
    11 int a[maxn][maxn];
    12 int T,n;
    13 int Dijkstra()
    14 {
    15     //已经确定的顶点集合 
    16     bool vis[maxn];
    17     memset(vis,0,sizeof(vis));
    18     //源点到该结点的最短距离,不断更新 
    19     int dis[maxn];
    20     //通过改变a[v][i]中的v来改变源点 
    21     for(int i=1;i<=n;i++)
    22     {
    23         dis[i]=a[1][i];
    24     }
    25     //v为第i次加进去的顶点 
    26     int v; 
    27     for(int i=1;i<=n;i++)
    28     {
    29         int min=inf; 
    30         for(int k=1;k<=n;k++)
    31         {
    32             if(!vis[k]&&dis[k]<min)
    33             {
    34                 min=dis[k];
    35                 v=k;    
    36             }
    37         }
    38         //将该结点加入顶点集 
    39         vis[v]=1;
    40         //对所有从v出发的边进行松弛 
    41         for(int k=1;k<=n;k++)
    42         {
    43             if(!vis[k]&&dis[v]+a[v][k]<dis[k])
    44             {
    45                 dis[k]=dis[v]+a[v][k];
    46             }
    47         }
    48     }
    49     //最后的dis[n]就是想要的结果 
    50     return dis[n];
    51 }
    52 int main()
    53 {
    54     scanf("%d%d",&T,&n);
    55     //初始化 
    56     memset(a,inf,sizeof(a));
    57     for(int i=1;i<=n;i++)
    58     {
    59         a[i][i]=0;
    60     }
    61     int x,y,z;
    62     for(int i=0;i<T;i++)
    63     {
    64         scanf("%d%d%d",&x,&y,&z);
    65         //为避免平行边,去最小值 
    66         a[x][y]=a[y][x]=min(a[x][y],z);
    67      } 
    68     int ans=Dijkstra();  
    69     printf("%d
    ",ans);
    70     return 0;
    71  } 
    Dijkstra
  • 相关阅读:
    练习题
    练习
    2.15
    数组
    java聊天工具12.4
    11.13(2)
    11.13
    10.30 作业
    10.23
    面向对象
  • 原文地址:https://www.cnblogs.com/itcsl/p/6664016.html
Copyright © 2011-2022 走看看