zoukankan      html  css  js  c++  java
  • 杭电2112--HDU Today(Dijkstra)

    HDU Today

    Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
    Total Submission(s): 19552    Accepted Submission(s): 4588


    Problem Description
    经过锦囊相助,海东集团终于度过了危机,从此,HDU的发展就一直顺风顺水,到了2050年,集团已经相当规模了,据说进入了钱江肉丝经济开发区500强。这时候,XHD夫妇也退居了二线,并在风景秀美的诸暨市浬浦镇陶姚村买了个房子,开始安度晚年了。
    这样住了一段时间,徐总对当地的交通还是不太了解。有时很郁闷,想去一个地方又不知道应该乘什么公交车,在什么地方转车,在什么地方下车(其实徐总自己有车,却一定要与民同乐,这就是徐总的性格)。
    徐总经常会问蹩脚的英文问路:“Can you help me?”。看着他那迷茫而又无助的眼神,热心的你能帮帮他吗?
    请帮助他用最短的时间到达目的地(假设每一路公交车都只在起点站和终点站停,而且随时都会开)。
     
    Input
    输入数据有多组,每组的第一行是公交车的总数N(0<=N<=10000);
    第二行有徐总的所在地start,他的目的地end;
    接着有n行,每行有站名s,站名e,以及从s到e的时间整数t(0<t<100)(每个地名是一个长度不超过30的字符串)。
    note:一组数据中地名数不会超过150个。
    如果N==-1,表示输入结束。
     
    Output
    如果徐总能到达目的地,输出最短的时间;否则,输出“-1”。
     
    Sample Input
    6
    xiasha westlake
    xiasha station 60
    xiasha ShoppingCenterofHangZhou 30
    station westlake 20
    ShoppingCenterofHangZhou supermarket 10
    xiasha supermarket 50
    supermarket westlake 10
    -1
     
    Sample Output
    50
    Hint: The best route is: xiasha->ShoppingCenterofHangZhou->supermarket->westlake 虽然偶尔会迷路,但是因为有了你的帮助 **和**从此还是过上了幸福的生活。 ――全剧终――
     
    Author
    lgx
     
    Source
     
    Recommend
    lcy   |   We have carefully selected several similar problems for you:  2680 1142 1385 1548 1690 
     
     1 #include <map>
     2 #include <cstdio>
     3 #include <cstring>
     4 #include <iostream>
     5 using namespace std;
     6 map<string, int> mmap; 
     7 int pic[1550][1550], dis[1550], vis[1550];
     8 const int INF = 0x3f3f3f3f;
     9 int Dijkstra(int src, int end, int k)
    10 {
    11     memset(vis, 0, sizeof(vis));
    12     for(int i = 1; i < k; i++)
    13         dis[i] = pic[src][i];
    14     vis[src] = 1;
    15     for(int i = 1; i < k - 1; i++)
    16     {
    17         int temp, min = INF;
    18         for(int j = 1; j < k; j++)
    19         {
    20             if(!vis[j]&&dis[j]<min)
    21             {
    22                 min = dis[j];
    23                 temp = j;
    24             //    printf("%d
    ", temp);
    25             }
    26         }
    27         vis[temp] = 1;
    28         for(int j = 1; j < k; j++)
    29             if(!vis[j] && dis[j] > dis[temp] + pic[temp][j])
    30                 dis[j] = dis[temp] + pic[temp][j];
    31         
    32     }
    33     return dis[end]==INF?-1:dis[end];
    34 }
    35 int main()
    36 {
    37     int t, k, sta, end;;
    38     while(~scanf("%d", &t), t != -1)
    39     {
    40         for(int i = 1; i < 155; i++)
    41             for(int j = 1; j < 155; j++)
    42                 pic[i][j]=(i==j?0:INF);
    43         k = 1; mmap.clear();
    44            char a[110], b[110]; int c;  // map存东西时要从1开始, important; 
    45         cin >> a >> b; 
    46         if(!mmap[a]) mmap[a] = k++;
    47         sta = k-1;
    48         if(!mmap[b]) mmap[b] = k++;
    49         end = k-1;
    50         // printf("%d %d", mmap[a], mmap[b]);    
    51          for(int i = 0; i < t; i++)
    52         {
    53             cin >> a >> b >> c;
    54             if(!mmap[a]) mmap[a] = k++;
    55             if(!mmap[b]) mmap[b] = k++;
    56             if(pic[mmap[a]][mmap[b]] > c)
    57                 pic[mmap[a]][mmap[b]] = pic[mmap[b]][mmap[a]] = c;
    58         }  
    59         printf("%d
    ", Dijkstra(sta, end, k)); 
    60     }
    61     return 0;
    62 } 
  • 相关阅读:
    给Apache增加SSI支持(shtml的奥秘)
    Raphael实现商品来源去向图
    有趣的居中方式
    oc-基本语法
    APMServ 配置记录
    解决Mac Chrome打开HTTPS证书错误问题
    JavaScript生成GUID的算法
    Backbone模型
    利用apply和arguments复用方法
    软件复用的几种方式
  • 原文地址:https://www.cnblogs.com/soTired/p/4738015.html
Copyright © 2011-2022 走看看