zoukankan      html  css  js  c++  java
  • Til the Cows Come Home(Dijkstra)

    Dijkstra (迪杰斯特拉)最短路算法,算是模板

    POJ - 2387 

     1 #include<iostream>
     2 #include<algorithm>
     3 #include<cstring>
     4 using namespace std;
     5 const int INF=0x3f3f3f3f;
     6 int book[1005],dis[1005],e[1005][1005];
     7 
     8 int main()
     9 {
    10     int T,n,u,minn;
    11     cin>>T>>n;
    12     
    13     for(int i=1;i<=n;i++)
    14     {
    15         for(int j=1;j<=n;j++)
    16             if(i==j) e[i][j]=0;
    17             else e[i][j]=e[j][i]=INF;
    18     } 
    19     for(int i=1;i<=T;i++)
    20     {
    21         int a,b,c;
    22         cin>>a>>b>>c;
    23         if(e[a][b]>c) //这步容易落下 
    24             e[a][b]=e[b][a]=c;
    25     }
    26     for(int i=1;i<=n;i++)
    27         dis[i]=e[1][i];
    28     memset(book,0,sizeof(book));
    29     book[1]=1; //初始化 
    30     
    31     for(int i=1;i<=n-1;i++) //n减去第一个点  就是n-1次 
    32     {
    33         minn=INF;
    34         for(int j=1;j<=n;j++)
    35         {
    36             if(book[j]==0&& dis[j]<minn)
    37             {
    38                 minn=dis[j];
    39                 u=j;   //u记录点的名称 
    40             }
    41         }
    42         book[u]=1;//这个点已经是到1的最小的点了,所以下一次不用 
    43         for(int v=1;v<=n;v++)
    44         {
    45             if( book[v]==0 && dis[v]>dis[u]+e[u][v]) //如果1到V点的最小值还没算过 
    46                 dis[v]=dis[u]+e[u][v];
    47         }
    48     }
    49     cout<<dis[n]<<endl;
    50     
    51 }
  • 相关阅读:
    Matlab之画图
    Evaluation
    Matlab之文件读写
    Matlab之cell使用
    Windows装机指南
    C之文件读写
    Linux之用户管理
    linux和Windows下文本格式转换
    round()
    pow()
  • 原文地址:https://www.cnblogs.com/thunder-110/p/9057417.html
Copyright © 2011-2022 走看看