POJ 2387 Til the Cows Come Home(Dijkstra算法)

来源:互联网 发布:微商吸粉软件 编辑:程序博客网 时间:2024/06/04 19:04




http://poj.org/problem?id=2387







最短路的简单问题   套模板 运用Dijkstra算法即可  不过要注意重边问题  即 两点之间可能会有多条直接连通的路 因为我们求最短路 所以只把这多条路中最短的一条记录下来即可



AC代码:

#include <stdio.h>      int map[2010][2010];  int dis[2010];  int maxinf=999999999;      void Dijkstra(int n){      int vis[2010];      for (int i=1;i<=n;i++)       {          dis[i]=map[1][i];          vis[i]=0;       }             vis[1]=1;      dis[1]=0;            int u;      for (int i=1;i<=n;i++){          int mindis=maxinf;          for (int j=1;j<=n;j++){              if (!vis[j]&&dis[j]<mindis){                  u=j;                  mindis=dis[j];               }                          }                      vis[u]=1;                    for (int j=1;j<=n;j++){              if (!vis[j]&&dis[u]+map[u][j]<dis[j]){                  dis[j]=dis[u]+map[u][j];               }           }                 }          }    int main (){      int N,M;      int A,B,C;      scanf ("%d%d",&N,&M);          for (int i=1;i<=M;i++){              for (int j=1;j<=M;j++){                      map[i][j]=maxinf;               }           }            for (int i=1;i<=N;i++){              scanf ("%d%d%d",&A,&B,&C);              if (map[A][B]>C)//注意重边                {                  map[A][B]=C;                  map[B][A]=C;                   }           }           Dijkstra(M);            printf ("%d\n",dis[M]);            return 0;  }  


0 0
原创粉丝点击