zoukankan      html  css  js  c++  java
  • hdu2544 最短路

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=2544

    最短路径DIJKSTRA

     1 #include<stdio.h>
     2 #include<math.h>
     3 #include<string.h>
     4 #include<stdlib.h>
     5 #include<limits.h>
     6 #include<iostream>
     7 using namespace std;
     8 const int N=110;
     9 int a[N][N];//用于标记两个路口的默认距离(权值)
    10 int use[N];//标记是否使用
    11 int d[N];//两点间最短距离
    12 int n,m;
    13 void dijkstra(int u)
    14 {
    15     memset(use,0,sizeof(use));
    16     for(int i=1;i<=n;i++)
    17     d[i]=a[u][i];//初始化赋值
    18     use[u]=1;//1路口起点标记使用
    19     d[u]=0;//1 1 距离为0
    20     for(int i=2;i<=n;i++)
    21     {
    22         int min=INT_MAX;//理论最大值
    23         int v=-1;//设v为一个不可能的点
    24         for(int w=1;w<=n;w++)//在所有未标记use中,选择d最小的点
    25         {
    26             if(!use[w] && d[w]<min)
    27             {
    28                 min=d[w];
    29                 v=w;
    30             }
    31         }
    32         if(v!=-1)//没有路径则不更新
    33         {
    34             use[v]=1;//标记使用
    35             for(int w=1;w<=n;w++)
    36             {
    37                 if(!use[w] && (a[v][w]<INT_MAX))//确定未使用以及拥有路径
    38                 {
    39                     if(d[w] > min+a[v][w])//比较,取得最小距离
    40                     d[w]=min+a[v][w];
    41                 }
    42             }
    43         }
    44     }
    45 //    for(int i=1;i<=n;i++)
    46 //    printf("%d ",d[i]);
    47 //    cout<<endl;
    48     printf("%d
    ",d[n]);
    49 }
    50 int main()
    51 {
    52     //freopen("in.txt","r",stdin);
    53     while(~scanf("%d%d",&n,&m)&&n&&m)
    54     {
    55         int x,y,c;
    56         for(int i=1;i<=n;i++)
    57         {
    58             for(int j=1;j<=n;j++)
    59             a[i][j]=INT_MAX;
    60         }
    61         for(int i=0;i<m;i++)
    62         {
    63             scanf("%d%d%d",&x,&y,&c);
    64             a[x][y]=a[y][x]=c;
    65         }
    66         dijkstra(1);
    67     }
    68     return 0;
    69 }
  • 相关阅读:
    IDEA搭建普通java项目
    反射的学习
    解决Eclipse中文文档注释错位-处女座的悲哀!
    maven私服的搭建
    Springboot简介01
    git初识
    Servlet学习系列1
    搭建和启动javaWeb项目
    IDEA快捷键使用说明
    1.6 比较、掩码和布尔逻辑
  • 原文地址:https://www.cnblogs.com/xuesen1995/p/4539321.html
Copyright © 2011-2022 走看看