zoukankan      html  css  js  c++  java
  • hdu 1548 A strange lift (dijkstra算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1548

    题目大意:升降电梯,先给出n层楼,然后给出起始的位置,即使输出从A楼道B楼的最短时间。

    注意的几点

    (1)每次按一下,只能表示上或者是下,然后根据输入的看是上几层或者是下几层。

    (2)注意不能到底不存在的楼层。

    详见代码。

     1 #include <iostream>
     2 #include <cstdio>
     3 using namespace std;
     4 const int INF=9999999;
     5 int map[205][205],node[205],vis[205],Min,n;
     6 
     7 void set()
     8 {
     9     for (int i=1; i<=n; i++)
    10     {
    11         vis[i]=0;
    12         node[i]=INF;
    13         for (int j=1; j<=n; j++)
    14             map[i][j]=INF;
    15     }
    16 }
    17 
    18 int dijkstra(int m,int end)
    19 {
    20     int tm=m;
    21     vis[m]=1;
    22     node[m]=0;
    23     for (int k=2; k<=n; k++)
    24     {
    25         Min=INF;
    26         for (int i=1; i<=n; i++)
    27             if (!vis[i])
    28             {
    29                 if (node[i]>node[tm]+map[tm][i])
    30                     node[i]=node[tm]+map[tm][i];
    31                 if (Min>node[i])
    32                 {
    33                     Min=node[i];
    34                     m=i;
    35                 }
    36             }
    37         vis[m]=1;
    38         tm=m;
    39         if(vis[end])
    40             return node[end];
    41     }
    42     return -1;
    43 }
    44 
    45 int main ()
    46 {
    47     int k;
    48     while (scanf("%d",&n),n)
    49     {
    50         set();
    51         int a,b;
    52         scanf("%d%d",&a,&b);
    53         for (int i=1; i<=n; i++)
    54         {
    55             scanf("%d",&k);
    56             if (i+k<=n)
    57                 map[i][i+k]=1;
    58             if (i-k>=1)
    59                 map[i][i-k]=1;
    60         }
    61         printf ("%d
    ",dijkstra(a,b));
    62     }
    63     return 0;
    64 }
  • 相关阅读:
    ID,ClientID,UniqueID的区别
    Struct构造函数
    关于sizeof,typeof
    C#文件读写
    code1
    .NET中加密与解密QueryString的方法
    addEventListener和attachEvent的区别
    执行带参数的存储过程
    如何得到机器上装的Powershell的版本
    [Gradle] How to determine OS info
  • 原文地址:https://www.cnblogs.com/qq-star/p/3913008.html
Copyright © 2011-2022 走看看